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

我是新来的铁轨和哈特尔的教程工作 。 一切都很好,直到我试图做第二次教程,并创build另一个项目,试图使用最新版本的铁轨。 当我尝试从应用程序文件夹中加载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 

我通过下面的步骤解决了它。

第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 

将被replace为

 SpreeDemo::Application.configure do 

注意:请参阅应用程序文件夹名称中的下划线,将其删除。

希望它适合你们。

首先在Rails之前设置Ruby版本

我有同样的问题,我试着给出的答案,并没有影响。 我甚至尝试改变名称来摆脱下划线,并没有影响。

问题是你做到了这一点:

$ rails new app_name

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

$ rvm 2.0.0

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

我不知道为什么这会起作用,我希望有人能够说清楚,但我可以告诉你,这比现在的主导作用更好。

这也发生在我身上。 问题是我使用了一个版本的Rails来创build项目。 然后我改变了Gemfile使用另一个版本的Rails,系统使用它来支撑或运行服务器。 新手问题! 一致地使用相同的版本应该解决问题。 🙂

我发布了一个类似问题的答案(可能太长): rails – NoMethodError:未定义的方法`configure'for FirstApp 。 这个线程实际上是在我最终解决scheme的过程中开始的,所以我想我会在这里发帖,以防万一对其他人有帮助。

从我可以告诉,问题发生在app / config / initializers / development.rb (和production.rb)文件为一个新的项目使用一些新版本的Rails生成(我不知道它开始的版本,我只testingRails 4.1.4)。 Hartl先生在他的教程中使用了Rails 4.0.8,这是我testing的最新版本,其中不会出现新的语法。

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

我是Rails新手,所以我不知道为什么这个语法在新版本中改变。 我认为这是故意的,比旧的方式更好。 最有可能的是,Hartl先生将在他的教程的未来版本中考虑这个版本的Rails版本,包括这个变化。

在那之前,在我上面提到的问题中看到我的其他答案,以更全面地解释如何在Windows 7上解决它,但是它的tl; dr是:

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

我有这个问题,当我搞砸了我的Gemfile。 例如,我创build了应用程序使用轨道4.0.2或类似的东西,然后由于一些错误,我把它改为4.1.1,这种改变导致这个完全相同的问题,在开发和生产