0

我一直在 rails3 中编码并解决了所有依赖项。现在,我已经回到 rails 2 并且有很多依赖问题。是否有任何明智的方法来确保所有 gem 和依赖项都根据当前的 rails 版本自动解决?

我不断收到此错误

 `default_options': undefined method `write_inheritable_attribute' for  Rails::Generator::Base:Class (NoMethodError)

错误日志

    from /home/saiesh/.rvm/gems/ruby-1.9.3-p429/gems/rails-2.3.8/lib/rails_generator/base.rb:90:in `<class:Base>'
from /home/saiesh/.rvm/gems/ruby-1.9.3-p429/gems/rails-2.3.8/lib/rails_generator/base.rb:85:in `<module:Generator>'
from /home/saiesh/.rvm/gems/ruby-1.9.3-p429/gems/rails-2.3.8/lib/rails_generator/base.rb:48:in `<module:Rails>'
from /home/saiesh/.rvm/gems/ruby-1.9.3-p429/gems/rails-2.3.8/lib/rails_generator/base.rb:6:in `<top (required)>'
from /home/saiesh/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
from /home/saiesh/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
from /home/saiesh/.rvm/gems/ruby-1.9.3-p429/gems/rails-2.3.8/lib/rails_generator.rb:37:in `<top (required)>'
from /home/saiesh/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
from /home/saiesh/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
from /home/saiesh/.rvm/gems/ruby-1.9.3-p429/gems/rails-2.3.8/bin/rails:15:in `<top (required)>'
from /home/saiesh/.rvm/gems/ruby-1.9.3-p429/bin/rails:19:in `load'
from /home/saiesh/.rvm/gems/ruby-1.9.3-p429/bin/rails:19:in `<main>'
from /home/saiesh/.rvm/gems/ruby-1.9.3-p429/bin/ruby_noexec_wrapper:14:in `eval'
from /home/saiesh/.rvm/gems/ruby-1.9.3-p429/bin/ruby_noexec_wrapper:14:in `<main>'

宝石清单

 *** LOCAL GEMS ***

actionmailer (3.2.13, 2.3.12, 2.3.8) actionpack (3.2.13, 2.3.12, 2.3.8)
activemodel (3.2.13)
activerecord (3.2.13, 2.3.12, 2.3.8)
activeresource ( 3.2.13, 2.3.12, 2.3.8)
activesupport (3.2.13, 2.3.12, 2.3.8)
arel (3.0.2)
bourbon (3.0.1)
builder (3.0.4)
bundler (1.3.5)
bundler-unload (1.0.1)
cancan (1.6.10)
coffee-rails (3.2.2) coffee-script (2.2.0)
coffee-script-source (1.6.2)
commonjs (0.2.6) 守护进程 (1.1. 9)
delayed_job(3.0.5)
delayed_job_active_record(0.4.4)erubis(2.7.0)
execjs(1.4.0)formtastic
(2.2.1) formtastic
-bootstrap(2.1.3)
haml (4.0.3)
远足 (1.2.3)
i18n (0.6.1)
旅程 (1.0.4) jquery-rails (3.0.1, 2.3.0)
json (1.8.0)
kaminari (0.14.1)
少 ( 2.3.2)
less-rails (2.3.3)
less-rails-fontawesome (0.5.0) libv8 (3.11.8.17 x86-linux)
mail (2.5.4)
meta_search (1.1.3)
mime-types (1.23)
multi_json (1.7.7)
mysql (2.9.1) mysql2 (0.3.11) polyamorous
(0.5.0)
polyglot (0.3.3)
rack (1.4.5, 1.1.6)
rack-cache (1.2)
rack-ssl (1.3 ) .3)
rack-test (0.6.2)
rails (3.2.13, 2.3.8)
railties (3.2.13)
rake > (10.1.0, 10.0.4)
rdoc (4.0.1, 3.12.2)
ref (1.0.5) ruby​​gems
-bundler (1.2.0)
rvm (1.11.3.8)
sass (3.2.9)
sass-rails (3.2.6) sprockets (2.2.2)
therubyracer (0.11.4)
雷神 (0.18.1)
倾斜 (1.4.1)树顶
(1.4.14)
twitter-bootstrap-rails (2.2.7)
tzinfo (0.3.37)
uglifier (2.1.1)

4

1 回答 1

0

为什么不为每个项目使用 gemsets 呢?

在您的应用程序中创建一个名为.rvmrc

rvm use --create ruby-x.x.x-version@your_app_name

举个例子:

rvm use --create ruby-1.9.3-head@your_app_name

现在,当您运行 bundle 时,它​​会像我的情况一样将宝石分割到单独的文件夹中:

.rvm/gems/ruby-1.9.3-head@your_app_name

在这种情况下,从一个应用程序切换到另一个应用程序将为您的应用程序加载所需的 gemset。这就像使用 RVM 在 Ruby 版本之间切换一样。

于 2013-07-02T07:11:26.327 回答