2015-07-23 2 views
0

Полностью новое приложение Rails 4.2.3. Единственными изменениями в Gemfile были удаление Spring, добавление dotenv и последних камней contentful_rails и contentful_model, опубликованных на rubygems.org.Конфигурация ресурса ContentfulModel теряется после инициализации

По неизвестным причинам детали конфигурации, определенные в инициализаторе, исчезают к моменту появления приложения. Это тот же объект (то же значение для ContentfulModel.configuration.object_id), но значения, которые были ранее правильными, теперь nil.

Я добавил инициализатор, как показано в README.

$ cat config/initializers/contentful_model.rb 
ContentfulModel.configure do |config| 
    byebug 
    config.access_token   = ENV['CONTENTFUL_ACCESS_TOKEN'] 
    config.preview_access_token = ENV['CONTENTFUL_PREVIEW_ACCESS_TOKEN'] 
    config.space    = ENV['CONTENTFUL_SPACE'] 
# config.options    = { 
    #extra options to send to the Contentful::Client 
# } 
end 

И я определил одну модель, Категория.

$ cat app/models/category.rb 
class Category < ContentfulModel::Base 
    self.content_type_id = "[category content type string]" 
end 

Итак, вот что происходит, когда я запустить консоль Rails:

$ rails c 

[1, 9] in /home/trevor/code/chef/www-contentful-rails/config/initializers/contentful_model.rb 
    1: ContentfulModel.configure do |config| 
    2: config.access_token   = ENV['CONTENTFUL_ACCESS_TOKEN'] 
    3: config.preview_access_token = ENV['CONTENTFUL_PREVIEW_ACCESS_TOKEN'] 
    4: config.space    = ENV['CONTENTFUL_SPACE'] 
    5: # config.options    = { 
    6:  #extra options to send to the Contentful::Client 
    7: # } 
    8: byebug 
=> 9: end 
(byebug) ContentfulModel.configuration 
#<ContentfulModel::Configuration:0x00000005bc7be0 @access_token="[my actual token string]", @entry_mapping={}, @preview_access_token="[my actual preview token string]", @space="[my actual space]"> 
(byebug) continue 
/home/trevor/.rvm/gems/[email protected]/gems/actionpack-4.2.3/lib/action_dispatch/http/mime_type.rb:163: warning: already initialized constant Mime::JSON      
/home/trevor/.rvm/gems/[email protected]/gems/actionpack-4.2.3/lib/action_dispatch/http/mime_type.rb:163: warning: previous definition of JSON was here      
Loading development environment (Rails 4.2.3) 
2.2.2 :001 > ContentfulModel.configuration 
=> #<ContentfulModel::Configuration:0x00000005bc7be0 @access_token=nil, @entry_mapping={"[category content type string]"=>Category}, @preview_access_token=nil, @space=nil>       
2.2.2 :002 > 

Я потратил кучу времени просеивания источника драгоценных камней и шаговый через отладчик без результатов. Я опубликовал an issue для проекта на GitHub, потому что я не смог определить источник проблемы, и я должен принять его внутри драгоценного камня. Любая помощь в том, как устранить эту проблему дальше, будет очень желанной!

ответ

0

solution должен был использовать недокументированный подход из-за changes a few months ago.

contentful_rails камень требует contentful_model (и наоборот), и только конфигурация документации contentful_model в README этого проекта, описывающий подход в моем вопросе. Конфигурация, выполненная таким образом, была полностью протерта, когда была инициализирована contentful_rails, которая ожидала, что конфигурация будет выполнена в своем собственном инициализаторе.

Так что я удалил конфиг/Инициализаторы/contentful_model.rb и теперь мой конфиг/инициализаторы/файл contents_rails.rb выглядит следующим образом:

ContentfulRails.configure do |config| 
    config.authenticate_webhooks = true # false here would allow the webhooks to process without basic auth 
    config.webhooks_username  = ENV['CONTENTFUL_WEBHOOK_USERNAME'] 
    config.webhooks_password  = ENV['CONTENTFUL_WEBHOOK_PASSWORD'] 

    config.access_token   = ENV['CONTENTFUL_ACCESS_TOKEN'] 
    config.preview_access_token = ENV['CONTENTFUL_PREVIEW_ACCESS_TOKEN'] 
    config.space     = ENV['CONTENTFUL_SPACE'] 
    config.contentful_options = { 
    #extra options to send to the Contentful::Client 
    } 
end 

отметить, что не config.options больше не вещь; это config.contentful_options.