启动Rails服务器时出错:未定义方法'configure'

sno*_*bra 22 gem ruby-on-rails railstutorial.org

我是rails的新手,并通过Hartl的教程.一切都很好,直到我第二次尝试做教程并创建了另一个试图使用最新版本的rails的项目.当我尝试rails server从app文件夹加载时,我收到以下错误.

$ 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)
Run Code Online (Sandbox Code Playgroud)

我的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
Run Code Online (Sandbox Code Playgroud)

Muh*_*jaz 57

我通过以下步骤解决了这个问题.

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

改变这一行

Rails.application.configure do
Run Code Online (Sandbox Code Playgroud)

Your_Rails_Application_Folder_name::Application.configure do
Run Code Online (Sandbox Code Playgroud)

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

Your_Rails_Application_Folder_name::Application.configure do
Run Code Online (Sandbox Code Playgroud)

将被替换为

SpreeDemo::Application.configure do
Run Code Online (Sandbox Code Playgroud)

注意:请参阅应用程序文件夹名称中的下划线.

希望它适合你们.

  • 重要的是不要在项目名称中使用下划线.如果您的项目文件夹名称是my_project,那么该行必须是`MyProject :: Application.configure do`而不是`my_project :: Application.configure do`或`My_Project :: Application.configure do`.像我这样的新手可以花很多时间来解决这个问题. (9认同)
  • 你能解释为什么这项工作或你是如何找到这个解决方案的? (2认同)

小智 6

首先在Rails new之前设置Ruby版本

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

问题是你这样做了:

$ rails new app_name

但你的ruby版本可能是2.1.1或其他东西.你想做:

$ rvm 2.0.0

在运行新应用程序之前,然后在Gemfile中设置2.0.0时(正如Hartl推荐的那样)它就会到位.

我不知道为什么会这样,我希望有人会对此有所了解,但我可以告诉你,这比目前处于领先地位的答案更有效.


小智 5

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