42

Hệ điều hành là Ubuntu 12.04, 64 bit.không thể tải railtie sau khi nâng cấp lên ray 4 trên ruby.railstutorial.org

Mới cho đường ray. Tương đối mới đối với Ruby. Theo hướng dẫn về ruby.railstutorial.org, chương 3.

Hướng dẫn đã được cập nhật để sử dụng ruby ​​2.0.0 và Rails 4.0.0.rc1. Trước đây gemfile đã chỉ định Rails 3.2.13 và không chỉ định phiên bản Ruby. Sau khi chuyển sang Gemfile mới nhất trong hướng dẫn, ruby ​​2.0.0 và Rails 4.0.0.rc1, tôi nhận được lỗi sau khi chạy các lệnh rails. Ví dụ ở đây là ray máy chủ

[email protected]:~/bin/railslearn/sample_app$ rails server 
/home/paul/bin/railslearn/sample_app/config/application.rb:7:in `require': cannot load such file -- active_resource/railtie (LoadError) 
    from /home/paul/bin/railslearn/sample_app/config/application.rb:7:in `<top (required)>' 
    from /home/paul/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.0.0.rc1/lib/rails/commands.rb:78:in `require' 
    from /home/paul/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.0.0.rc1/lib/rails/commands.rb:78:in `block in <top (required)>' 
    from /home/paul/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.0.0.rc1/lib/rails/commands.rb:75:in `tap' 
    from /home/paul/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.0.0.rc1/lib/rails/commands.rb:75:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 

tôi đã nhận được một số ý tưởng từ Rails: Could not find railties, nêu dưới đây, nhưng vẫn chưa tìm ra cách khắc phục.

Đây là chi tiết.

Hôm qua (trong trình duyệt của tôi) Gemfile cho Chương 3 như sau. Mọi thứ đều ổn.

$ cat Gemfile 
source 'https://rubygems.org' 

gem 'rails', '3.2.13' 
gem 'bootstrap-sass', '2.1' 
gem 'bcrypt-ruby', '3.0.1' 
gem 'faker', '1.0.1' 
gem 'will_paginate', '3.0.3' 
gem 'bootstrap-will_paginate', '0.0.6' 
gem 'jquery-rails', '2.0.2' 

group :development, :test do 
    gem 'sqlite3', '1.3.5' 
    gem 'rspec-rails', '2.11.0' 
    # gem 'guard-rspec', '1.2.1' 
    # gem 'guard-spork', '1.2.0' 
    # gem 'childprocess', '0.3.6' 
    # gem 'spork', '0.9.2' 
end 

# Gems used only for assets and not required 
# in production environments by default. 
group :assets do 
    gem 'sass-rails', '3.2.5' 
    gem 'coffee-rails', '3.2.2' 
    gem 'uglifier', '1.2.3' 
end 

group :test do 
    gem 'capybara', '1.1.2' 
    gem 'factory_girl_rails', '4.1.0' 
    gem 'cucumber-rails', '1.2.1', :require => false 
    gem 'database_cleaner', '0.7.0' 
    # gem 'launchy', '2.1.0' 
    # gem 'rb-fsevent', '0.9.1', :require => false 
    # gem 'growl', '1.0.3' 
end 

group :production do 
    gem 'pg', '0.12.2' 
end 

Sáng nay Gemfiles trong hướng dẫn sử dụng ruby ​​2.0.0 và đường ray 4.0.0.rc1. Tôi muốn thiết lập này hoạt động, vì vậy tôi không có xung đột với hướng dẫn được cập nhật. Gemfile mới như sau.

$ cat Gemfile 
source 'https://rubygems.org' 
ruby '2.0.0' 

gem 'rails', '4.0.0.rc1' 

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

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

gem 'sass-rails', '4.0.0.rc1' 
gem 'uglifier', '2.1.1' 
gem 'coffee-rails', '4.0.0' 
gem 'jquery-rails', '2.2.1' 
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 'pg', '0.15.1' 
end 

Trước tiên tôi đã thay đổi phiên bản ruby ​​trong Gemfile thành 'ruby' 1.9.2 'vì đó là những gì tôi đang chạy và nghĩ rằng tôi gặp lỗi khi cập nhật gói. Tôi không ghi chép.

Sau đó, thay đổi phiên bản ruby ​​trở lại '2.0.0' trong Gemfile và:

$ rvm install 2.0.0 
$ rvm use 2.0.0 --default 
$ bundle update 
$ bundle install 

Bây giờ tôi nhận được không thể tải railtie lỗi với lệnh đường ray.

Từ Rails: Could not find railties, tôi đã thử sau

$ gem uninstall railties 

Select gem to uninstall: 
1. railties-4.0.0.rc1 
2. railties-3.2.13 
3. All versions 
> 2 

You have requested to uninstall the gem: 
    railties-3.2.13 

rails-3.2.13 depends on railties (= 3.2.13) 
If you remove this gem, these dependencies will not be met. 
Y # uninstall railties-3.2.13 

vẫn nhận được lỗi

$ gem uninstall rails # to uninstall rails-3.2.13 
$ gem uninstall railties # to also uninstall railties-4.0.0.rc1 
$ rvm reinstall 2.0.0 
$ rvm 2.0.0 --default 
$ bundle update # using the Gemfile with ruby 2, rails 4 
$ bundle install 

$ gem list | grep rail 
coffee-rails (4.0.0) 
jquery-rails (2.2.1) 
rails (4.0.0.rc1) 
railties (4.0.0.rc1) 
rspec-rails (2.13.1) 
sass-rails (4.0.0.rc1) 
sprockets-rails (2.0.0.rc4) 

vẫn nhận được lỗi

Quay trở lại thông qua các thiết lập ban đầu từ các hướng dẫn trong chương một (hiện đã được cập nhật cho ruby ​​2, rails 4.)

$ rvm use [email protected]_rails_4_0 --create --default 
$ gem update --system 2.0.0 
$ gem install rails --version 4.0.0.rc1 --no-ri --no-rdoc 
$ bundle update # using Gemfile with ruby 2, rails 4 
$ bundle install 

vẫn gặp lỗi

ug !!!

Bất kỳ ý tưởng nào?

Trả lời

65

ActiveResource là một API được thêm vào trong Rails 2.x để hỗ trợ XML (và sau này là JSON) API để các trang Rails có thể "nói chuyện" với nhau. Đó là một chủ đề rất nóng khi ý tưởng về các API RESTful được đưa vào trong khung công tác. Theo thời gian nó đã trở nên nhiều hơn một sự mới lạ và không thường xuyên duy trì để nó được kéo từ cốt lõi trong Rails 4.x.

Bạn có hai tùy chọn tại Rails 4.x.Nếu bạn không có ý định sử dụng ActiveResource (tôi cho rằng đây là trường hợp nếu bạn mới làm quen với Rails và làm việc trên một hướng dẫn) thì bạn có thể đơn giản loại bỏ hoặc bình luận ra đường ray kéo nó vào khung công tác. Mở 'config/application.rb' và nhận xét dòng thứ bảy.

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" <--- comment out this line 

Nếu bạn muốn sử dụng ActiveResource, thì chỉ cần thêm nó vào Gemfile cho dự án. Trước đây nó được bao gồm bởi các đá quý đường ray như là một phụ thuộc; bây giờ bạn sẽ phải thêm nó một cách rõ ràng nếu bạn muốn sử dụng nó.

+6

tuyệt, chỉ cần thêm gem 'activeresource' vào Gemfile –

+0

Whoa, Cảm ơn. Tôi đã có một vấn đề tương tự, ngoại trừ nó đã được activejob: 'gem' activejob ',' 4.2.0'' thêm vào gemfile giải quyết nó ... –

3

'activeresource' có sẵn dưới dạng đá quý riêng biệt từ Rails 4

0

Tôi đã gặp lỗi tương tự. những gì tôi đã làm là: trong Gemfile Tôi đã thay đổi phiên bản đường ray: gem 'rails', '4.2.0' Sau đó trên dòng lệnh đã thực hiện lệnh này: bundle install. Để xem máy phát nào có sẵn cho chúng tôi, hãy nhập rails g hoặc rails generate trên CLI.