我有几个版本为2.3.8的Rails应用程序,我使用瘦服务器运行。我想在同一台机器上安装Rails 3.0.1以进行测试。
安装工作正常,但在安装Rails 3.0.1之后,运行瘦的Rails 2.3.8应用程序失败并出现此错误:
>> Using rails adapter
Missing the Rails 2.3.8 gem. Please `gem install -v=2.3.8 rails`,
update your RAILS_GEM_VERSION setting in config/environment.rb for
the Rails version you do have installed, or comment out RAILS_GEM_VERSION
to use the latest version installed.
使用Rails 3安装的最新版本的机架(1.2.1)似乎存在问题。如果我卸载机架1.2.1并仅保留机架1.1.0,我的Rails 2.3.8应用程序运行没有问题
在environment.rb中使用config.gem指定机架版本无法解决问题。在vendor / gems目录中解压缩机架1.1.0 gem也不会改变任何内容。
使用rack 1.2.1,我无法启动Rails 2.3.8应用程序。没有机架1.2.1,我无法启动我的Rails 3.0.1应用程序。
我在网上找到的所有解决方案都是关于打开机架宝石的包装,但这似乎对我不起作用。还有其他我应该做的事吗?
答案 0 :(得分:2)
我只使用RVM系统安装了Ruby 1.9.2p0,我使用Rails 3& 2.3.10在使用Thin的同一台服务器上。
您必须在rails 2.3.10应用程序(http://gembundler.com/rails23.html)上设置bundler。
这是我的Rails 2.3.10应用程序的Gemfiles之一。指定机架版本非常重要。
source :gemcutter
gem "rack", "~> 1.1.0"
gem "rails", "~> 2.3.10"
gem "will_paginate", "~> 2.3.15"
gem 'haml'
gem 'mysql2'
gem 'authlogic'
gem 'searchlogic'
gem 'paperclip'
gem 'thin'
对于Rails 2.3.10,您必须使用以下命令从app目录开始精简:
bundle exec thin start <options here>
如果您正在使用RVM并尝试从init脚本启动应用程序,请阅读以下内容:RVM and thin, root vs. local user
答案 1 :(得分:0)
与Rails 2.3.5应用程序和Thin(1.2.7)存在相同的问题。 不得不:
gem uninstall rack --version 1.2.1
gem uninstall rack --version 1.1.0
只留下版本1.0.1然后它工作正常。
和你一样,我将陷入混乱,试图将应用程序转换为Rails 3.一种解决方案是使用rvm(我已经是)和它的gemsets概念,它为特定应用程序的特定gems提供隔离。我还没玩过那些。
希望'瘦'的人能够解决这个问题。
答案 2 :(得分:0)
我确实设法通过在不同位置安装Ruby两次来运行两个Rails版本。
如果有人找到了只用一个Ruby运行的方法,我有兴趣知道。