2011-10-03 58 views
0

我正在通过Michael Hartl Rails 3教程开展工作,目前我正在开发第3章。本教程要求我生成一个页面控制器,其中包含主页和联系人的操作页面使用命令行:“$ rails generate controller页面主页联系人”。无法在Rails 3教程中生成页面控制器

这是输出我得到:

ruby 1.9.2p290 (2011-07-09) [i386-mingw32] 

C:\Users\abcd\rails_projects2\sample_app>rails generate controller Pages home 
contact 
C:/Users/abcd/rails_projects2/sample_app/config/application.rb:8:in `require': 
no such file to load -- sprockets/railtie (LoadError) 
     from C:/Users/abcd/rails_projects2/sample_app/config/application.rb:8: 
in `<top (required)>' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/comman 
ds.rb:15:in `require' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/comman 
ds.rb:15:in `<top (required)>' 
     from script/rails:6:in `require' 
     from script/rails:6:in `<main>' 

我的config/application.rb中文件的内容:

require File.expand_path('../boot', __FILE__) 

# Pick the frameworks you want: 
require "active_record/railtie" 
require "action_controller/railtie" 
require "action_mailer/railtie" 
require "active_resource/railtie" 
require "sprockets/railtie" 
# require "rails/test_unit/railtie" 

if defined?(Bundler) 
    # If you precompile assets before deploying to production, use this line 
    Bundler.require *Rails.groups(:assets => %w(development test)) 
    # If you want your assets lazily compiled in production, use this line 
    # Bundler.require(:default, :assets, Rails.env) 
end 

module SampleApp 
    class Application < Rails::Application 
    # Settings in config/environments/* take precedence over those specified here. 
    # Application configuration should go into files in config/initializers 
    # -- all .rb files in that directory are automatically loaded. 

    # Custom directories with classes and modules you want to be autoloadable. 
    # config.autoload_paths += %W(#{config.root}/extras) 

    # Only load the plugins named here, in the order given (default is alphabetical). 
    # :all can be used as a placeholder for all plugins not explicitly named. 
    # config.plugins = [ :exception_notification, :ssl_requirement, :all ] 

    # Activate observers that should always be running. 
    # config.active_record.observers = :cacher, :garbage_collector, :forum_observer 

    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. 
    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. 
    # config.time_zone = 'Central Time (US & Canada)' 

    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. 
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] 
    # config.i18n.default_locale = :de 

    # Configure the default encoding used in templates for Ruby 1.9. 
    config.encoding = "utf-8" 

    # Configure sensitive parameters which will be filtered from the log file. 
    config.filter_parameters += [:password] 

    # Enable the asset pipeline 
    config.assets.enabled = true 

    # Version of your assets, change this if you want to expire all your assets 
    config.assets.version = '1.0' 
    end 
end 

我还发现,当我尝试运行命令行“轨服务器”,我收到类似的错误消息。我不知道这些信息是否有用。

谢谢!

+0

可以请您发布您的Gemfile的内容? – Tilo

+0

source'http://rubygems.org' gem'rails','3.0。9' 宝石 'sqlite3的', '1.3.3' 组:发展做 宝石 'RSpec的护栏', '2.6.1' 结束 组:测试做 宝石 'RSpec的护栏',“2.6 .1' gem'webrat','0.7.1' end – user975914

+0

本教程让我将Gemfile的内容更改为上述文章。 – user975914

回答

0
在你的config/application.rb中文件

,试图取消对“链轮”路线是这样的:

# require "sprockets/railtie" 

然后检查是否正常工作之后......应该做的伎俩...

但如果不是,请检查您的Gemfile,它应该是这个样子:

# gem "rails", "~> 3.1.0"  # or "3.0.9" 
gem "rails" , "3.0.9" 
gem 'sqlite3', '1.3.3'   # or whatever DB you use 

如果仍然没有帮助,请检查您所安装的链轮的版本: 在外壳,做:

$ gem list | grep sprock 
sprockets (2.0.0.beta.10) 
+0

我编辑了config/application.rb并运行生成命令 C:\ Users \ abcd \ rails_projects2 \ sample_app> rails generate controller Page home contact C:/Users/abcd/rails_projects2/sample_app/config/application.rb:13:在':未定义的方法'groups for Rails:模块(NoMethodError) from C: /Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/comman ds.rb:15:在'require' from C:/ Ruby192/lib/ruby​​/gems/1.9.1/gems/railties-3.0.9/lib/rails/comman ds.rb:15:在' from script/rails:6:in'require' from脚本/导轨:6:在'

' – user975914

+0

我的Gemfile也是正确的,这是我的链轮版本:链轮(2.0.1,2.0.0) – user975914

+0

你可以在你的问题下面切割+粘贴你的Gemfile吗? – Tilo

2

它看起来像教程使用Rails 3.0.9,但你已经创建使用Rails的宝石更高版本应用程序。

sprockets已在版本3.1中添加。尽管您已经更新了Gemfile以指定Rails 3.0.9,但运行rails new sample_app时生成的代码需要Rails 3.1 gem可用(即只更改Gemfile并不足以更改应用程序的Rails版本)。

您可以尝试简单地在您的application.rb文件中注释对sprockets的引用,但即使现在可行,也可能会有其他差异,稍后会导致错误。

最好的办法是从头开始,但要确保你使用的是Rails 3.0.9。如果您使用的是RVM,则可以创建一个新的gemset并安装3.0.9,然后使用该gemset。

或者,当您创建应用程序指定的命令需要的宝石的版本:

rails _3.0.9_ new sample_app 

如果使用第二种方法,那么你所创建的应用程序,只需使用rails通过后本身发布命令(如generate)应该没问题,因为Rails确定应用程序的版本并使用正确的宝石版本有一定的魔力,即使安装了更高版本的版本 - 您不需要始终使用rails _3.0.9_

相关问题