2017-09-13 2 views
0

Je suis coincé et même si j'ai trouvé quelques sujets sur ce problème, je n'ai trouvé aucune solution. J'essaie d'ajouter un abonnement à Mailchimp si mon "Packer" s'inscrit à notre newsletter (un "Packer" est une sorte de "User" - "User" a seulement les paramètres Devise et "Packer" a le resteRails ne reconnaît pas mon application/services (constante non initialisée)

L'erreur est une constante non initialisée, Cela semble être dû au fait que les rails ne reconnaissent pas mon service.

Voici mon # app/modèles/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 

et mon # app/services/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 

En regardant dans les différentes solutions, j'ai aussi ajouté que la ligne dans # config/application.rb

module Pyswebsitev1 
    class Application < Rails::Application 
    @config.autoload_paths += %W(#{config.root}/app/services) 
    config.i18n.default_locale = :en 
    end 
end 

Lorsque je fais une console rails - ActiveSupport :: Dependenci es.autoload_paths Le résultat comprennent/app/services

"/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" 

J'ai aussi essayé "arrêt de printemps", pour redémarrer le serveur, et de regrouper.

Si vous avez une idée, ce serait très utile! Merci beaucoup

Répondre

0

Peut-être avez-vous oublié de mettre le _service dans votre nom de fichier si vous l'avez ajouté à votre question. Je devine ...

0

Vous oubliez le _service à la fin du nom de fichier.