【问题标题】:local variable or method `config' for main:Object (NameError)main:Object (NameError) 的局部变量或方法“config”
【发布时间】:2014-08-07 23:47:39
【问题描述】:

我正在关注这篇文章以集成 Omniauth Twitter + Devise http://sourcey.com/rails-4-omniauth-using-devise-with-twitter-facebook-and-linkedin/,但我遇到了一个阻止我启动我的 rails 应用程序的问题。

 /Users/javier/Desktop/definitive/config/environment.rb:8:in `<top (required)>': undefined     local variable or method `config' for main:Object (NameError)
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:in `require'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:in `block in require'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:232:in `load_dependency'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:in `require'
from /Users/javier/Desktop/definitive/config.ru:3:in `block in <main>'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize'
from /Users/javier/Desktop/definitive/config.ru:in `new'
from /Users/javier/Desktop/definitive/config.ru:in `<main>'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/rack-1.5.2/lib/rack/builder.rb:49:in `eval'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/rack-1.5.2/lib/rack/builder.rb:49:in `new_from_string'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/rack-1.5.2/lib/rack/builder.rb:40:in `parse_file'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/rack-1.5.2/lib/rack/server.rb:277:in `build_app_and_options_from_config'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/rack-1.5.2/lib/rack/server.rb:199:in `app'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/railties-4.1.1/lib/rails/commands/server.rb:50:in `app'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/rack-1.5.2/lib/rack/server.rb:314:in `wrapped_app'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/railties-4.1.1/lib/rails/commands/server.rb:130:in `log_to_stdout'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/railties-4.1.1/lib/rails/commands/server.rb:67:in `start'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:81:in `block in server'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:76:in `tap'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:76:in `server'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/railties-4.1.1/lib/rails/commands.rb:17:in `<top (required)>'
from /Users/javier/Desktop/definitive/bin/rails:8:in `require'
from /Users/javier/Desktop/definitive/bin/rails:8:in `<top (required)>'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/rails.rb:27:in `load'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/rails.rb:27:in `call'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client.rb:26:in `run'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/bin/spring:48:in `<top (required)>'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `load'
from /Users/javier/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `<top (required)>'
from /Users/javier/Desktop/definitive/bin/spring:16:in `require'
from /Users/javier/Desktop/definitive/bin/spring:16:in `<top (required)>'
from bin/rails:3:in `load'
from bin/rails:3:in `<main>'

我猜问题出在config/environment.rb 的第 8 行,但找不到正确的修复程序。是否可以将 environment.rb 包含在 'config/environments/' 中?

【问题讨论】:

    标签: ruby-on-rails devise omniauth


    【解决方案1】:

    文章说你应该在里面放一些代码:

    config/environments/[environment].rb
    

    [environment].rb 表示以下文件之一:

    config/environments/development.rb
    config/environments/production.rb
    config/environments/test.rb
    

    如果您希望在不同环境中使用相同的设置,也可以将代码放入 config/application.rb。

    显示的代码行以config.* 开头,它们应该放在Rails.application.configure do 块内。

    config/environment.rb 在典型的 Rails 4 应用程序中只是 require 和 Rails.application.initialize!,不需要修改。

    【讨论】:

    • 包含在 'config/environments/development.rb' 中,但它在第 13 行返回了一个问题,即 'authentication => :plain' Log is: 'Users/javier/Desktop/definitive/ config/environments/development.rb:13:in block in &lt;top (required)&gt;': undefined local variable or method authentication' for #<:application:0x0000010248ba40> (NameError)'
    • 还尝试将其添加到 'application.rb' 不知道 'environment.rb' 通常保持未编辑状态,谢谢指出。
    • 啊,看来博文也有错别字。 authentication =&gt; :plain, 应该是 authentication: :plain
    • 它不断返回问题。我已经上传了问题的要点,应用程序的 github 就是这个gist.github.com/malditojavi/d68121b21ed861cab830github.com/malditojavi/definitive/blob/master/config/…
    • 同样的错字,下一行 (14):domain =&gt; 'somedomain.com' 应该是 domain: 'somedomain.com'。使用 hashrocket 时,哈希键不能是裸词。
    【解决方案2】:

    如果您在environment.rb 中有config.xxx

    删除它并将这些添加到development.rb:

    Rails.application.configure do
      config.xxx
    end
    

    【讨论】:

      【解决方案3】:

      我也遇到过这样的错误(

      NameError: undefined local variable or method `server' for main:Object
              from (irb):1
              from C:/RailsInstaller/Ruby2.2.0/bin/irb:11:in `<main>'),
      

      )

      也许是因为我是 ruby​​ on rails 的新手。因此,我没有从直接命令行启动 Rails 服务器,而是尝试从 IRB 内部启动,因此出现了该错误。

      当我从 IRB 出来并从 CMD 再次启动服务器时,它启动顺利。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-14
        • 2016-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多