Rails无法识别我的应用程序/服务(未初始化的常量)
问题描述:
我卡住了,即使我发现有关此问题的某些主题,我也没有找到任何解决方案。Rails无法识别我的应用程序/服务(未初始化的常量)
如果我的“Packer”注册到我们的新闻邮件(一个“Packer”是一种“User” - “User”只有Devise参数,并且“Packer”具有其他功能,我想添加订阅到Mailchimp )
错误是未初始化的常量,它似乎是因为rails无法识别我的服务。
这里是我的#应用程序/模型/ packer.rb
after_create :subscribe_to_newsletter
after_update :subscribe_to_newsletter
private
def subscribe_to_newsletter
SubscribeToNewsletterService.new.call(self.user) if self.newsletter
end
和我#应用程序/服务/ subscribe_to_newsletter_service.rb
require "gibbon"
class SubscribeToNewsletterService
def initialize
@gibbon = Gibbon::Request.new(api_key: ENV['MAILCHIMP_API_KEY'])
@list_id = ENV['MAILCHIMP_NEWSLETTER_LIST_ID']
end
def call(user)
@gibbon.lists(@list_id).members.create(
body: {
email_address: user.email,
status: "subscribed",
double_optin: false,
# merge_fields: {
# FNAME: @user.first_name,
# LNAME: @user.last_name
# }
}
)
end
end
展望不同的解决方案,我也补充说行在#config/application.rb中
module Pyswebsitev1
class Application < Rails::Application
@config.autoload_paths += %W(#{config.root}/app/services)
config.i18n.default_locale = :en
end
end
当我做一个轨道控制台 - ActiveSupport :: Dependenci es.autoload_paths 结果包括/应用/服务
"/Users/MaxBook/code/PackYourSkills/pyswebsitev1/app/assets",
"/Users/MaxBook/code/PackYourSkills/pyswebsitev1/app/channels",
"/Users/MaxBook/code/PackYourSkills/pyswebsitev1/app/controllers",
"/Users/MaxBook/code/PackYourSkills/pyswebsitev1/app/controllers/concerns",
"/Users/MaxBook/code/PackYourSkills/pyswebsitev1/app/helpers",
"/Users/MaxBook/code/PackYourSkills/pyswebsitev1/app/jobs",
"/Users/MaxBook/code/PackYourSkills/pyswebsitev1/app/mailers",
"/Users/MaxBook/code/PackYourSkills/pyswebsitev1/app/models",
"/Users/MaxBook/code/PackYourSkills/pyswebsitev1/app/models/concerns",
"/Users/MaxBook/code/PackYourSkills/pyswebsitev1/app/policies",
"/Users/MaxBook/code/PackYourSkills/pyswebsitev1/app/services",
"/usr/local/Cellar/rbenv/1.0.0/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rails-assets-underscore-1.8.3/app/assets",
"/usr/local/Cellar/rbenv/1.0.0/versions/2.3.1/lib/ruby/gems/2.3.0/gems/jquery-fileupload-rails-0.4.7/app/assets",
"/usr/local/Cellar/rbenv/1.0.0/versions/2.3.1/lib/ruby/gems/2.3.0/bundler/gems/attachinary-98a895be22ed/app/controllers",
"/usr/local/Cellar/rbenv/1.0.0/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rails_admin-1.2.0/app/assets",
"/usr/local/Cellar/rbenv/1.0.0/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rails_admin-1.2.0/app/controllers",
"/usr/local/Cellar/rbenv/1.0.0/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rails_admin-1.2.0/app/helpers",
"/usr/local/Cellar/rbenv/1.0.0/versions/2.3.1/lib/ruby/gems/2.3.0/gems/jquery-ui-rails-5.0.5/app/assets",
"/usr/local/Cellar/rbenv/1.0.0/versions/2.3.1/lib/ruby/gems/2.3.0/gems/font-awesome-rails-4.7.0.2/app/assets",
"/usr/local/Cellar/rbenv/1.0.0/versions/2.3.1/lib/ruby/gems/2.3.0/gems/font-awesome-rails-4.7.0.2/app/helpers",
"/usr/local/Cellar/rbenv/1.0.0/versions/2.3.1/lib/ruby/gems/2.3.0/gems/devise-4.3.0/app/controllers",
"/usr/local/Cellar/rbenv/1.0.0/versions/2.3.1/lib/ruby/gems/2.3.0/gems/devise-4.3.0/app/helpers",
"/usr/local/Cellar/rbenv/1.0.0/versions/2.3.1/lib/ruby/gems/2.3.0/gems/devise-4.3.0/app/mailers",
"/Users/MaxBook/code/PackYourSkills/pyswebsitev1/test/mailers/previews"
我也试图“春停止”,重新启动服务器,并捆绑。
如果您有任何想法,那将非常有帮助! 非常感谢您
答
也许你忘了把_service
放在你的文件名中,如果你把它放在你的问题中。只是猜测...
答
您忘记文件名末尾的_service
。