独angular兽3.3.1和Rack 1.1.0的问题?

我正在从Ruby Enterprise Edition 1.8.6升级到Unicorn的最新1.8.7版本,以便升级到Rails 2.3.10,并遇到一些问题。 我应该卸载这些gem的旧版本吗?

这里是日志消息:

我正在从Ruby Enterprise Edition 1.8.6升级到Unicorn的最新1.8.7版本,以便升级到Rails 2.3.10,并遇到一些问题。 我应该卸载这些gem的旧版本吗?

I, [2011-02-02T22:06:16.328076 #30672] INFO -- : listening on addr=0.0.0.0:8080 fd=3 I, [2011-02-02T22:06:16.333137 #30672] INFO -- : Refreshing Gem list /srv/ree/bin/unicorn_rails must be run inside RAILS_ROOT: #<Gem::LoadError: can't activate rack (~> 1.1.0, runtime) for ["actionpack-2.3.10", "rails-2.3.10"], already activated rack-1.2.1 for ["unicorn-3.3.1"]> I, [2011-02-02T22:07:12.259436 #30701] INFO -- : listening on addr=0.0.0.0:8080 fd=3 I, [2011-02-02T22:07:12.259952 #30701] INFO -- : Refreshing Gem list /srv/ree/bin/unicorn_rails must be run inside RAILS_ROOT: #<Gem::LoadError: can't activate rack (~> 1.1.0, runtime) for ["actionpack-2.3.10", "rails-2.3.10"], already activated rack-1.2.1 for ["unicorn-3.3.1"]> I, [2011-02-02T22:09:27.787177 #30772] INFO -- : listening on addr=0.0.0.0:8080 fd=3 I, [2011-02-02T22:09:27.787691 #30772] INFO -- : Refreshing Gem list /srv/ree/bin/unicorn_rails must be run inside RAILS_ROOT: #<Gem::LoadError: can't activate rack (~> 1.1.0, runtime) for ["actionpack-2.3.10", "rails-2.3.10"], already activated rack-1.2.1 for ["unicorn-3.3.1"]> I, [2011-02-02T22:10:44.175407 #30846] INFO -- : listening on addr=0.0.0.0:8080 fd=3 I, [2011-02-02T22:10:44.175928 #30846] INFO -- : Refreshing Gem list /srv/ree/bin/unicorn_rails must be run inside RAILS_ROOT: #<Gem::LoadError: can't activate rack (~> 1.1.0, runtime) for ["actionpack-2.3.10", "rails-2.3.10"], already activated rack-1.2.1 for ["unicorn-3.3.1"]> 

我碰到了这个问题。 我们使用Bundler,似乎没有帮助。 某个gem想要使用Rack 1.1.0,但独angular兽没有它。 我不认为与gemsets rvm会帮助,因为两个不同的gem要求两个不同版本的机架。

最终,我结束了一个生产服务器运行:

 Rails 2.3.10 Ruby Enterprise Edition 1.8.7 Bundler 1.0.10 Unicorn 3.1.0 Rack 1.1.0 

您必须卸载Rack 1.2.1。 我也使用unicorn_rails包裹我的铁轨应用程序在机架中。 我不知道这是否有必要,但我无法让我的导轨路线与机架特定的应用程序(蜻蜓)正常工作。

此外,您需要从rails目录的根目录运行该命令(除非在configuration中指定了working_directory)。 我推荐使用Brandon Tilley的指南来为RVM,Nginx和Unicorn服务Rails应用程序,尽pipe我不能得到正义的工作。 我结束了我自己的/etc/init.d/unicorn_test_app脚本,基本上只是运行:

 rvm_path=/usr/local/rvm \ /usr/local/bin/rvm-shell "ree-1.8.7-2011.03@test_app_rails2" -c \ "/usr/local/rvm/gems/ree-1.8.7-2011.03@test_app_rails2/bin/unicorn_rails \ -D -E production -c /var/www/test_app/config/unicorn.rb" 

然后用特定的信号杀死进程。 一旦你完成所有的工作,这是相当不错的,因为你可以有零停机时间(除了迁移)。

只有我不喜欢我的脚本:这是gemset特定的。

我看到三种方法来解决这个问题: