在Ubuntu上运行Rails时遇到问题

首先是一些背景。 我正在尝试在全新安装的Ubuntu上运行Community Engine 。 CE是一个在Rails上运行的开放式src社交网络插件。 我能够在没有问题的情况下在我的Windows机器上运行CE并运行。 我现在决定使用Ubuntu 8.10作为我的开发环境,并坚持这个问题。 我在过去的几个晚上研究了这个,但仍然卡住了。

当我到达指令的这一步( 在此处找到 )时会发生什么:

Generate the community engine migrations: $ script/generate plugin_migration 

我收到以下错误:

 myuser@compy:~/Projects/MyProject$ script/generate plugin_migration /home/myuser/Projects/MyProject/config/../vendor/plugins/engines/boot.rb:4: This version of the engines plugin requires Rails 2.1.1 or later! (RuntimeError) from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /home/myuser/Projects/MyProject/config/environment.rb:12 from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /home/myuser/Projects/MyProject/vendor/rails/railties/lib/commands/generate.rb:1 from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from script/generate:3 

这是我的ruby版本:

 myuser@compy:~/Projects/MyProject$ ruby -v ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux] 

和我安装的gem:

 myuser@compy:~/Projects/MyProject$ gem list *** LOCAL GEMS *** actionmailer (2.2.0, 2.1.2, 2.1.1) actionpack (2.2.0, 2.1.2, 2.1.1) activerecord (2.2.0, 2.1.2, 2.1.1) activeresource (2.2.0, 2.1.2, 2.1.1) activesupport (2.2.0, 2.1.2, 2.1.1) aws-s3 (0.5.1) builder (2.1.2) capistrano (2.5.0) cgi_multipart_eof_fix (2.5.0) daemons (1.0.10) fastthread (1.0.1) gem_plugin (0.2.3) haml (2.0.4) highline (1.4.0) hpricot (0.6.164) htmlentities (4.0.0) mime-types (1.15) mongrel (1.1.5) net-scp (1.0.1) net-sftp (2.0.1) net-ssh (2.0.4) net-ssh-gateway (1.0.0) rails (2.2.0, 2.1.2, 2.1.1) <--- clearly I have rails 2.1.1 or greater rake (0.8.3) RedCloth (4.1.0) rmagick (2.7.1) sqlite3-ruby (1.2.4) xml-simple (1.0.11) 

当我只有rails 2.1.1时,我收到了这个错误。

是的,我有更多的gem比我需要的CE,但在试图追踪这一点,这是我最终得到的。 我有一种潜在的怀疑,无论问题是什么,它都是愚蠢的,我应该抓住它。 但在这一点上,我对XP盒子上的简单过程感到非常沮丧。

我在社区引擎谷歌小组中提出了这个问题,但是,我觉得这与我在机器上设置Ruby和Rails比与CE本身有关。

帮助将不胜感激。

“问题”不是来自CommunityEngine本身,而是来自底层的“引擎”插件( http://github.com/lazyatom/engines )。

查看引擎插件中boot.rb的源代码,我们可以看到它只是检查标准的Rails :: VERSION字段,所以问题也不存在。

现在,当您创建rails应用程序时,它与您第一次创建rails应用程序时使用的特定版本相关联。 只是让你的系统上的轨道2.1.1 / 2gem并不意味着它们会自动被使用。

要检查实际的rails应用程序本身,请查看rails应用程序中的config/environment.rb文件。 你会看到这样的东西:

 # Specifies gem version of Rails to use when vendor/rails is not present RAILS_GEM_VERSION = '2.1.0' unless defined? RAILS_GEM_VERSION 

如果它小于2.1.1,那么您将需要升级您的rails应用程序。
这非常简单:

  1. config/environment.rbRAILS_GEM_VERSION字符串更改为2.1.1或更高版本
  2. 运行rake rails:upgrade

希望这能解决你的问题:-)

这个问题最终是由于没有usind sudo来安装rails。 我最终完全吹掉ruby并重新安装它。 我还密切关注我需要安装的各种gem的输出,以确保它们下载并运行。 我很惊讶地看到他们中的许多人无法下载并且必须在他们安装之前运行第二次,甚至第三次。

关于Orion的建议,我检查了RAILS_GEM_VERSION,它是2.1.1或更高。 这就是导致这个问题最混乱的原因,因为它说的是需要什么版本,然后gem -v会告诉我正确的版本。

Interesting Posts