簡體   English   中英

從3.0.10遷移到3.1.19后嘗試運行Rails服務器時出錯

[英]Error when trying to run rails server after migrating from 3.0.10 to 3.1.19

我試圖按照這個railscast的方法將我的3.0.10 rails應用程序遷移到3.1.10,但是事情對我來說並不像對Ryan那樣順利。 解決了一些gemset依賴問題之后,現在嘗試啟動開發服務器時遇到以下錯誤:

[nw0.0.1master (migrate_to_31)]$ rails s
=> Booting WEBrick
=> Rails 3.1.10 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.8.7/lib/rake.rb:2503:in `const_missing': uninitialized constant Sass::Plugin (NameError)
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/aws-s3-0.6.3/lib/aws/s3/extensions.rb:212:in `const_missing_from_s3_library'
    from /Users/charlesweinberger/rails_projects/nw0.0.1master/config/initializers/active_admin.rb:2:in `<top (required)>'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/engine.rb:556:in `block (2 levels) in <class:Engine>'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/engine.rb:555:in `each'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/engine.rb:555:in `block in <class:Engine>'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/initializable.rb:30:in `instance_exec'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/initializable.rb:30:in `run'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/initializable.rb:55:in `block in run_initializers'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/initializable.rb:54:in `each'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/initializable.rb:54:in `run_initializers'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/application.rb:96:in `initialize!'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /Users/charlesweinberger/rails_projects/nw0.0.1master/config/environment.rb:7:in `<top (required)>'
    from /Users/charlesweinberger/rails_projects/nw0.0.1master/config.ru:3:in `block in <main>'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/rack-1.3.8/lib/rack/builder.rb:51:in `instance_eval'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/rack-1.3.8/lib/rack/builder.rb:51:in `initialize'
    from /Users/charlesweinberger/rails_projects/nw0.0.1master/config.ru:in `new'
    from /Users/charlesweinberger/rails_projects/nw0.0.1master/config.ru:in `<main>'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/rack-1.3.8/lib/rack/builder.rb:40:in `eval'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/rack-1.3.8/lib/rack/builder.rb:40:in `parse_file'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/rack-1.3.8/lib/rack/server.rb:200:in `app'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/commands/server.rb:46:in `app'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/rack-1.3.8/lib/rack/server.rb:304:in `wrapped_app'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/rack-1.3.8/lib/rack/server.rb:254:in `start'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/commands/server.rb:70:in `start'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/commands.rb:54:in `block in <top (required)>'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/commands.rb:49:in `tap'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/commands.rb:49:in `<top (required)>'
    from script/rails:37:in `require'
    from script/rails:37:in `<main>'

這是我當前的Gemfile:

gem "pg"
gem 'pg_search'
gem 'rails', '3.1.10'
gem 'nokogiri', '1.5.5'
gem 'geocoder', '1.0.2'
gem 'devise', '1.5.3'
gem 'acts_as_api', '0.3.8'
gem 'paperclip', '~>2.4.1'
gem 'rake', '0.8.7'
gem 'omniauth', :git => 'https://github.com/intridea/omniauth.git'
gem 'fb_graph', '1.9.5'
gem 'twitter', :git => 'https://github.com/sferik/twitter.git'
gem 'jquery-rails', '>= 1.0.12'
gem 'aws-s3'
gem 'remotipart', '~> 1.0'
gem 'activeadmin'
gem 'formtastic', '~> 2.1.0'
gem "browser"
gem "httparty"
gem "thin"

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails', "  ~> 3.1.0"
  gem 'coffee-rails', "~> 3.1.0"
  gem 'uglifier'
end


group :production, :staging do
end

group :development do
    gem 'rspec-rails'
    gem 'annotate', '2.4.0'
    gem 'faker', '0.3.1'
    gem 'ruby-debug19', '0.11.6'
    gem 'nifty-generators', '0.4.6'
    gem 'silent-postgres'
end

group :test do
  gem 'rspec'
  gem 'webrat', '0.7.1'
  gem 'factory_girl_rails'
    gem "mocha", '0.9.12'
    gem 'silent-postgres'
end

而且,我已經在application.rb中啟用了資產管道。 這是application.rb:

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

require 'rails/all'

# 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)

module Nw001
  class Application < Rails::Application

    # 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'

    # 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

    # JavaScript files you want as :defaults (application.js is always included).
    # config.action_view.javascript_expansions[:defaults] = %w(jquery rails)

    # 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]

    # Use SQL instead of Active Record's schema dumper when creating the database.
    # This is necessary if your schema can't be completely dumped by the schema dumper,
    # like if you have constraints or database-specific column types
    # Note, the migration that I use to install the unaccented module for pgs requires SQL
    # config.active_record.schema_format = :sql

 #uncomment to force ssl on localhost   
#   config.middleware.insert_before ActionDispatch::Static, "Rack::SSL"
  end
end

並且,對我的config / environments文件進行了建議的添加。

任何想法如何通過未初始化的常量Sass :: Plugin(NameError)?

我也嘗試過使用Rails 3.1.0,它會引發相同的錯誤。 我還運行了rails generate active_admin:assets來更新active_admin資產,但是沒有愛。

更新

在@andrew的建議下,我創建了一個新的示例rails3.1.10應用程序。 實際上,我所做的是刪除我以前的3.1版本的gemset。 使用rvm創建一個新的gemset; 將rails 3.1.10安裝到新的寶石集中; 開始使用新的3.1 gemset; 然后創建一個新的Rails 3.1.10應用程序。 該應用程序按預期運行。

然后,我進一步采取了行動,將新應用程序gemfile替換為我要遷移到3.1.10的應用程序中的gemfile。 解決了幾個依賴性問題並將sqlite3 gem重新插入gemfile之后,新的測試應用程序再次按預期運行。

然后,我將測試應用程序的gemfile復制回我要遷移的應用程序中,並仍使用新的3.1 gemset嘗試加載開發服務器。 我仍然遇到錯誤,它與上面列出的錯誤相似,但是有些不同。 看看這個:

[nw0.0.1master (master)]$ rails s
=> Booting WEBrick
=> Rails 3.1.10 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/aws-s3-0.6.3/lib/aws/s3/extensions.rb:212:in `const_missing_from_s3_library': uninitialized constant Sass::Plugin (NameError)
    from /Users/charlesweinberger/rails_projects/nw0.0.1master/config/initializers/active_admin.rb:2:in `<top (required)>'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/engine.rb:556:in `block (2 levels) in <class:Engine>'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/engine.rb:555:in `each'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/engine.rb:555:in `block in <class:Engine>'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/initializable.rb:30:in `instance_exec'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/initializable.rb:30:in `run'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/initializable.rb:55:in `block in run_initializers'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/initializable.rb:54:in `each'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/initializable.rb:54:in `run_initializers'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/application.rb:96:in `initialize!'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /Users/charlesweinberger/rails_projects/nw0.0.1master/config/environment.rb:7:in `<top (required)>'
    from /Users/charlesweinberger/rails_projects/nw0.0.1master/config.ru:3:in `block in <main>'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/rack-1.3.8/lib/rack/builder.rb:51:in `instance_eval'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/rack-1.3.8/lib/rack/builder.rb:51:in `initialize'
    from /Users/charlesweinberger/rails_projects/nw0.0.1master/config.ru:in `new'
    from /Users/charlesweinberger/rails_projects/nw0.0.1master/config.ru:in `<main>'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/rack-1.3.8/lib/rack/builder.rb:40:in `eval'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/rack-1.3.8/lib/rack/builder.rb:40:in `parse_file'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/rack-1.3.8/lib/rack/server.rb:200:in `app'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/commands/server.rb:46:in `app'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/rack-1.3.8/lib/rack/server.rb:304:in `wrapped_app'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/rack-1.3.8/lib/rack/server.rb:254:in `start'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/commands/server.rb:70:in `start'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/commands.rb:54:in `block in <top (required)>'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/commands.rb:49:in `tap'
    from /Users/charlesweinberger/.rvm/gems/ruby-1.9.2-p290@rails31/gems/railties-3.1.10/lib/rails/commands.rb:49:in `<top (required)>'
    from script/rails:37:in `require'
    from script/rails:37:in `<main>'

這個新信息會觸發任何想法嗎??? 謝謝!

問題是由於我在gemfile中指定了gem 'rake', "0.8.7" )引起的。 將其更改為gem 'rake' ,就解決了問題。 注意,您甚至可能不需要在gemfile中包含rake ,因為它將作為依賴項包含在內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM