我是RubyonRails的新手,在过去的三天里,我一直试图在Heroku上部署一个简单的带有RubyonRails功能的Cappuccino应用程序,每次初始化(heroku rake db:migrate
)时,我都会收到以下错误。
(in /app)
rake aborted!
uninitialized constant Rake::FileUtilsExt
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2482:in `const_missing'
/app/Rakefile:15:in `<module:RakeFileUtils>'
/app/Rakefile:14:in `<top (required)>'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2373:in `load'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:1991:in `run'
/usr/ruby1.9.2/bin/rake:31:in `<main>'
我已经更新了所有需要的宝石和捆绑包。这是我的宝石清单供您参考:
*** LOCAL GEMS ***
abstract (1.0.0)
actionmailer (3.0.9, 3.0.8, 3.0.7, 3.0.5)
actionpack (3.0.9, 3.0.8, 3.0.7, 3.0.5, 2.3.8)
activemodel (3.0.9, 3.0.8, 3.0.7, 3.0.5)
activerecord (3.0.9, 3.0.8, 3.0.7, 3.0.5)
activeresource (3.0.9, 3.0.8, 3.0.7, 3.0.5)
activesupport (3.0.9, 3.0.8, 3.0.7, 3.0.5, 2.3.8)
arel (2.1.1, 2.0.10, 2.0.9)
builder (3.0.0, 2.1.2)
bundler (1.0.15)
capistrano (2.6.0, 2.5.20)
configuration (1.2.0)
daemons (1.1.3, 1.1.0)
dnssd (2.0)
erubis (2.7.0, 2.6.6)
eventmachine (0.12.10)
fastthread (1.0.7)
fcgi (0.8.8)
heroku (2.3.0, 2.2.8 ruby)
highline (1.6.2, 1.6.1)
hpricot (0.8.4)
i18n (0.6.0, 0.5.0)
jk-ferret (0.11.8.3)
launchy (0.4.0)
libxml-ruby (2.0.6, 1.1.4)
mail (2.3.0, 2.2.19, 2.2.15)
mime-types (1.16)
net-scp (1.0.4)
net-sftp (2.0.5)
net-ssh (2.1.4, 2.1.3)
net-ssh-gateway (1.1.0, 1.0.1)
polyglot (0.3.1)
rack (1.3.0, 1.2.3)
rack-mount (0.8.1, 0.7.1, 0.6.14)
rack-test (0.6.0, 0.5.7)
rails (3.0.9, 3.0.8)
railties (3.0.9, 3.0.8)
rake (0.9.2, 0.8.7)
rdoc (3.6.1)
RedCloth (4.2.7)
rest-client (1.6.3)
ruby-openid (2.1.8)
rubygems-update (1.8.5, 1.6.2)
sequel (3.24.1, 3.20.0)
sinatra (1.2.6, 1.0)
sqlite3 (1.3.3)
sqlite3-ruby (1.3.3)
taps (0.3.23)
term-ansicolor (1.0.5)
thin (1.2.11)
thor (0.14.6)
tilt (1.3.2)
treetop (1.4.9)
tzinfo (0.3.28, 0.3.25)
xmpp4r (0.5)
这是捆绑包列表:
{Gems included by the bundle:
* abstract (1.0.0)
* actionmailer (3.0.8)
* actionpack (3.0.8)
* activemodel (3.0.8)
* activerecord (3.0.8)
* activeresource (3.0.8)
* activesupport (3.0.8)
* arel (2.0.10)
* builder (2.1.2)
* bundler (1.0.15)
* erubis (2.6.6)
* i18n (0.5.0)
* mail (2.2.19)
* mime-types (1.16)
* polyglot (0.3.1)
* rack (1.2.3)
* rack-mount (0.6.14)
* rack-test (0.5.7)
* rails (3.0.8)
* railties (3.0.8)
* rake (0.9.2)
* sqlite3 (1.3.3)
* thor (0.14.6)
* treetop (1.4.9)
* tzinfo (0.3.28)}
我什么都试过了,我已经达到了个人极限。我花了很多时间探索这里的问题,并尝试了所有可用的方法。
我在一台新的Heroku服务器上收到了同样的错误,该服务器带有一个新的小型Rails应用程序,以前从未收到过。也许这是一个新的Heroku问题?
使用tap推送本地数据库是一个快速解决方案,但既不是可扩展的,也不是合理的长期解决方案:
$ sudo gem install taps
$ heroku db:push
Rake版本存在已知问题。试着将你的Rake版本回滚到0.8.7。
参见DHH的推特评论(2011-05-21):昨天发布的Rake0.9打破了Rails(和其他)。在我们等待修复的过程中,您需要在Gem文件中包含gem 'rake', '0.8.7'
如何修复Heroku上未初始化的常量Rake::DSL问题?听起来很相似。
也许试试
require 'rake/file_utils'
在Rakefile之前需要"rake"?