2013-11-27 27 views
1

我有一個名爲bdm_content_server爲什麼我的Rails 3.2.3應用程序失敗,因爲我的引擎插件已經制定安裝

我有一個叫bdmcs Rails的引擎插件Rails應用程序。

引擎作爲本地文件gem安裝在我的應用程序中。

gem "bdmcs", :path => "../bdmcs" 

引擎運行良好,我可以在運行WEBrick時通過應用程序訪問它的控制器和視圖。

我在引擎內部安裝了設計,以控制誰可以訪問引擎的視圖。安裝進行得很順利(有一點修改ala Rails engine and devise),並且我能夠在引擎內執行數據庫遷移,但現在當我嘗試遷移它安裝的應用程序時,出現錯誤:

undefined method `secret_key=' for Devise:Module 
/var/apps/bdm_content/bdmcs/config/initializers/devise.rb:7:in `block in <top (required)>' 
/var/lib/gems/1.9.1/gems/devise-2.2.8/lib/devise.rb:267:in `setup' 
/var/apps/bdm_content/bdmcs/config/initializers/devise.rb:3:in `<top (required)>' 

該應用程序似乎沒有確認引擎的設計設置和配置。

我已經安裝在Gemfile中應用程序的色器件的寶石,如果我刪除它,我得到一個不同的錯誤:

cannot load such file -- devise 
/var/apps/bdm_content/bdmcs/lib/bdmcs.rb:1:in `require' 
/var/apps/bdm_content/bdmcs/lib/bdmcs.rb:1:in `<top (required)>' 

任何人有什麼想法?

我在周圍搜索了類似的問題,但只找到了與應用程序設計或引擎設計相關的問題,但沒有涉及到兩者都涉及的問題。

由於提前 - Testero

這是我的/bdmcs/config/initializers/devise.rb文件(如設計安裝在我的引擎):

Devise.setup do |config| 
    config.secret_key = 'some_random_key' 
    config.mailer_sender = '[email protected]' 
    require 'devise/orm/active_record' 
    config.case_insensitive_keys = [ :email ] 
    config.strip_whitespace_keys = [ :email ] 
    config.skip_session_storage = [:http_auth] 
    config.stretches = Rails.env.test? ? 1 : 10 
    config.reconfirmable = true 
    config.password_length = 8..128 
    config.reset_password_within = 6.hours 
    config.sign_out_via = :delete 
    config.router_name = :bdmcs_user 
end 

而且我/ bdmcs/lib目錄/bdcms.rb文件:

require 'devise' 
require "bdmcs/engine" 

module Bdmcs 
end 

編輯 - 清晰度和進一步詳細

回答

0

在你config/initializers/devise.rb文件中加入這一行:

config.secret_key = 'Your secret Key' 

您可以使用rake secret來生成密鑰。

確保您的Gemfile中使用最新版本的Devise。

此外請確保您重新啓動服務器。這樣做後,99%的問題都消失了。

+0

此行已經在我的引擎插件的devise.rb中設置,但這就是它絆腳石的地方。就好像配置變量沒有被設置,因爲devise在引擎之外沒有被識別。 或者你是否也說過把它添加到我的應用程序中?我沒有devise.rb初始值設定項。 – Jocko

+0

好的,你需要'設計'在你的engine.rb –

+0

是的,我已經更新了該文件的內容的問題。 – Jocko

0

我發現這是一個Devise版本問題。

出於某種原因,設計了發動機內部正在安裝的版本3.2.2,並安裝在應用中色器件是2.2.8

不知道這是怎麼發生的,因爲我沒有指定任何特定版本,並且都是在相同的導軌環境中生成的。

升級之後,我得到了Railties和Devise之間的版本衝突,所以我最終不得不將Rails升級到4.0.0(以及所有其他的東西),然後它就工作了。

我仍然有捆綁版本問題,但我已經解決了使用bundle exec ...來執行我的耙和鐵軌任務。

相關問題