0

我有几个版本为 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 的最新版本的 rack (1.2.1) 似乎有问题。如果我卸载 rack 1.2.1 并只保留 rack 1.1.0,我的 Rails 2.3.8 应用程序运行没有问题。

在 environment.rb 中使用 config.gem 指定机架版本并不能解决问题。在 vendor/gems 目录中解压 rack 1.1.0 gem 也不会改变任何东西。

使用 rack 1.2.1,我无法启动 Rails 2.3.8 应用程序。如果没有 rack 1.2.1,我就无法启动 Rails 3.0.1 应用程序。

我在网上找到的所有解决方案都是关于打开机架 gem,但这似乎对我不起作用。还有什么我应该做的吗?

4

3 回答 3

2

我刚刚使用 RVM 系统范围安装了 Ruby 1.9.2p0,并且我在使用 Thin 的同一台服务器上使用 Rails 3 和 2.3.10 运行应用程序。

您必须在您的 rails 2.3.10 应用程序 ( http://gembundler.com/rails23.html ) 上设置捆绑程序。

这是我用于 Rails 2.3.10 应用程序的 Gemfile 之一。指定机架版本很重要。

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

于 2011-03-05T21:20:15.937 回答
0

I did manage to run both Rails versions by installing Ruby twice in separate locations.

If anyone finds a way to run with only one Ruby though, I'd be interested to know.

于 2010-10-22T13:07:38.497 回答
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 提供隔离。我还没有玩过那些。

希望“瘦”的人能解决这个问题。

于 2010-10-21T21:31:11.197 回答