【问题标题】:Error launching Rails server: undefined method 'configure'启动 Rails 服务器时出错:未定义的方法“配置”
【发布时间】:2014-04-10 01:32:19
【问题描述】:

我是 Rails 新手,正在使用 Hartl's tutorial。一切都很好,直到我第二次尝试完成教程并创建了另一个项目尝试使用最新版本的 rails。当我尝试从 app 文件夹加载 rails server 时,出现以下错误。

$ rails s
=> Booting WEBrick
=> Rails 4.0.4 application starting in development on
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
Exiting
/Users/sierra/Desktop/sample_app_2/config/environments/development.rb:1:in
  `<top (required)>': undefined method `configure' for
  #<SampleApp2::Application:0x00000101a74610> (NoMethodError)

我的 Gemfile 直接来自 Hartl 教程:

source 'https://rubygems.org'
ruby '2.1.0'
#ruby-gemset=railstutorial_rails_4_0

gem 'rails', '4.0.4'

group :development, :test do
  gem 'sqlite3', '1.3.8'
  gem 'rspec-rails', '2.13.1'
end

group :test do
  gem 'selenium-webdriver', '2.35.1'
  gem 'capybara', '2.1.0'
end

gem 'sass-rails', '4.0.1'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.1'
gem 'jquery-rails', '3.0.4'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'

group :doc do
  gem 'sdoc', '0.3.20', require: false
end

group :production do
  gem 'rails_12factor', '0.0.2'
end

【问题讨论】:

  • 您是否运行了捆绑安装?
  • 是的,我做了捆绑更新,然后捆绑安装,并继续得到相同的结果。

标签: ruby-on-rails gem railstutorial.org


【解决方案1】:

我通过以下步骤解决了它。

第 1 步:转到 Project_Root_Directory/config/environment/development.rb

改变这一行

Rails.application.configure do

Your_Rails_Application_Folder_name::Application.configure do

例如,我的 rails 项目文件夹名称是“Spree_demo”,因此 Your_Rails_Application_Folder_name 在以下行中:

Your_Rails_Application_Folder_name::Application.configure do

将被替换为

SpreeDemo::Application.configure do

注意:应用程序文件夹名称中的下划线将被删除。

希望对你们有用。

【讨论】:

  • 您能解释一下为什么这样做或者您是如何得出这个解决方案的吗?
  • 项目名称中不要有下划线,这一点很重要。如果您的项目文件夹名称是 my_project,那么该行必须是 MyProject::Application.configure do 而不是 my_project::Application.configure doMy_Project::Application.configure do。像我这样的新手可能会花很多时间来解决这个问题。
  • 我认为如果你有 Rails 4+ 但 development.rb 文件来自 Rails 3
  • 为我说“未定义的局部变量或方法”
【解决方案2】:

Rails new 之前的第一个 Ruby 版本

我遇到了同样的问题,我尝试了给出的答案,但没有任何影响。 我什至尝试更改名称以摆脱下划线,但没有任何影响。

问题是你这样做了:

$ rails new app_name

但是您的 ruby​​ 版本可能是 2.1.1 或其他版本。你想做的事:

$ rvm 2.0.0

在您运行新应用程序之前,然后当您在 Gemfile 中设置 2.0.0(如 Hartl 建议的那样)时,它就会到位。

我不知道为什么会这样,我希望有人能解释一下,但我可以告诉你,这比目前领先的答案更有效。

【讨论】:

    【解决方案3】:

    这也发生在我身上。问题是我使用了一个版本的 Rails 来创建项目。然后我更改了 Gemfile 以使用另一个版本的 Rails,系统正在使用它来搭建或运行服务器。新手问题! 始终使用相同的版本应该可以解决问题。 :-)

    【讨论】:

      【解决方案4】:

      我在类似的问题中发布了一个(可能太长了)答案:rails - NoMethodError: undefined method `configure' for FirstApp。这个帖子实际上让我开始走向最终的解决方案,所以我想我也会在这里发帖,以防万一它对其他人有帮助。

      据我所知,当使用一些较新版本的 Rails (我不确定它是从哪个版本开始的,我只测试了 Rails 4.1.4)。 Hartl 先生在他的教程中使用 Rails 4.0.8,这是我测试的最高版本,没有出现新语法。

      在 Rails 4.1.4 以及 4.0.8 之后的一些其他版本中,这些文件中的第一行生成为 Rails.application.configure.do,而不是使用名为 sample_app 的项目作为示例,SampleApp::Application.configure.do 如4.0.8.

      我是 Rails 的新手,所以我不知道为什么这个语法在新版本中发生了变化。我假设它是故意的,并且比旧方法更好。很可能,Hartl 先生会在他的教程的未来版本中考虑到这一点,这些版本针对包含此更改的 Rails 版本进行了更新。

      在那之前,请参阅我在question I mentioned above 中的另一个答案,以更全面地解释我如何在 Windows 7 上解决它,但它的 tl;dr 是:

      确保您在创建新项目之前使用本地存储库/根开发目录中为教程指定的 Rails 版本 (4.0.8)。 创建项目后更新您的 Gemfile 仍然很重要,但如果文件本身是使用较新版本的 Rails 生成的,则无法解决此问题。在这种情况下,您必须按照其他用户的建议进入并手动编辑该行。

      【讨论】:

        【解决方案5】:

        我在搞乱我的 Gemfile 时遇到了这个问题。例如,我使用 rails 4.0.2 或类似的东西创建了应用程序,然后由于一些错误,我将其更改为 4.1.1,该更改在开发和生产中都导致了完全相同的问题

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-03-31
          • 1970-01-01
          • 1970-01-01
          • 2012-04-18
          • 1970-01-01
          相关资源
          最近更新 更多