【问题标题】:WEBRIck not booting up..getting error messageWEBRIck 未启动..收到错误消息
【发布时间】:2014-11-22 18:13:47
【问题描述】:

这是我在执行 rails s 时收到的新错误消息......

退出 C:/Sites/ThinkBlog/crumblr/config/initializers/devise.rb:235:in block in <top (required)>': undefined method[]' for nil:NilClass (NoMethodError) 来自 C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/devise-3.3.0/lib/devise.rb:292:in setup' from C:/Sites/ThinkBlog/crumblr/config/initializers/devise.rb:3:in' 来自 C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:241:in `load'

顺便说一下,device.rb 中的第 235 行是,

config.omniauth :facebook, FACEBOOK_CONFIG['facebook_api_key'], FACEBOOK_CONFIG['facebook_api_secret']

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 devise


    【解决方案1】:

    错误消息会准确地告诉您代码有什么问题:undefined method[]' for nil,或者换句话说:您尝试在一个对象上调用[] 方法,即nil

    由于您只在 FACEBOOK_CONFIG 上调用 [],因此出现此错误的唯一原因是:FACEBOOK_CONFIG 未初始化,因此 nil

    【讨论】:

    • 谢谢 spickermann,我会看看如何初始化 FACEBOOK_CONFIG,我会回来的..
    • 这就是我的 FACEBOOK_CONFIG 的样子:FACEBOOK_CONFIG = YAML.load_file("#{::Rails.root}/config/facebook.yml")[::Rails.env]
    • 不知道为什么它没有被初始化..我确实在上面的代码中更改了 # 之前是 $ 的位置。
    • 你在哪个文件中设置了这个常量? $ 变量是全局变量,可以从应用程序的任何地方访问。大写常量可能在命名空间范围内。
    • FACEBOOK_CONFIG 位于 config 文件夹下的 initializers 子文件夹中。该常量是从 devise.rb 文件中调用的,该文件也在 initializers 子文件夹中。这是你想知道的还是想知道的?让我知道我会提供更多细节。
    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 2012-03-27
    • 2017-08-13
    • 1970-01-01
    • 2020-03-06
    • 2022-11-19
    • 2012-05-20
    • 2016-06-14
    相关资源
    最近更新 更多