【发布时间】:2013-12-13 17:49:02
【问题描述】:
我有一个名为 bdm_content_server 的 Rails 应用程序
我有一个名为 bdmcs 的 Rails 引擎插件。
引擎作为本地文件 gem 安装在我的应用程序中。
gem "bdmcs", :path => "../bdmcs"
引擎运行良好,在运行 WEBrick 时我能够通过应用程序访问它的控制器和视图。
我在引擎内部安装了 devise 来控制谁可以访问引擎的视图。设置很顺利(稍作修改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 中安装了 devise gem,如果我删除它,我会得到一个不同的错误:
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)>'
有人有什么想法吗?
我搜索了类似的问题,但只找到了与 Devise in an Application 或 Devise in an Engine 相关的问题,但没有找到两者都涉及的问题。
提前致谢 - 测试人员
这是我的 /bdmcs/config/initializers/devise.rb 文件(由 Devise 安装在我的引擎中):
Devise.setup do |config|
config.secret_key = 'some_random_key'
config.mailer_sender = 'please-change-me-at-config-initializers-devise@example.com'
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
已编辑 - 清晰度和更多细节
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 devise