【问题标题】:Version management of gems while working with ruby on rails在使用 ruby​​ on rails 时对 gem 进行版本管理
【发布时间】:2013-06-29 10:40:35
【问题描述】:

我一直在 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) 动作包(3.2.13、2.3.12、2.3.8)
活动模型 (3.2.13)
活动记录(3.2.13、2.3.12、2.3.8)
活动资​​源(3.2.13、2.3.12、2.3.8)
主动支持(3.2.13、2.3.12、2.3.8)
阿雷尔 (3.0.2)
波旁威士忌 (3.0.1)
生成器 (3.0.4)
捆绑器 (1.3.5)
捆绑器卸载 (1.0.1)
康康 (1.6.10)
咖啡轨 (3.2.2) 咖啡脚本 (2.2.0)
咖啡脚本源 (1.6.2)
commonjs (0.2.6) 守护进程 (1.1.9)
延迟作业 (3.0.5)
delay_job_active_record (0.4.4) erubis (2.7.0)
execjs (1.4.0)
形式化 (2.2.1)
格式引导 (2.1.3)
哈姆 (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)
少导轨 (2.3.3)
less-rails-fontawesome (0.5.0) libv8 (3.11.8.17 x86-linux)
邮件 (2.5.4)
元搜索 (1.1.3)
哑剧类型 (1.23)
multi_json (1.7.7)
mysql (2.9.1) mysql2 (0.3.11)
多角恋 (0.5.0)
多语言 (0.3.3)
机架 (1.4.5, 1.1.6)
机架缓存 (1.2)
机架 SSL (1.3.3)
机架测试 (0.6.2)
导轨(3.2.13、2.3.8)
railties (3.2.13)
耙子 > (10.1.0, 10.0.4)
rdoc (4.0.1, 3.12.2)
参考 (1.0.5)
rubygems 捆绑器 (1.2.0)
rvm (1.11.3.8)
萨斯 (3.2.9)
sass-rails (3.2.6) 链轮 (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)
丑陋者(2.1.1)

【问题讨论】:

  • 您可以在您使用的宝石列表中添加错误日志吗?
  • 请查看我编辑的问题@prasad.surase
  • 既然您使用的是 rails 2,您不应该使用 ruby​​ 1.8 而不是 1.9.3 吗?

标签: ruby-on-rails ruby-on-rails-2


【解决方案1】:

为什么不为每个项目使用 gemset?

在您的应用中创建一个名为.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 版本之间切换一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多