Rails 2.2.3和最新的Rake

时间:2012-02-24 10:57:51

标签: ruby-on-rails ruby rubygems rake

我有rake任务的问题。当我尝试执行任何rake任务时,我遇到了以下错误:uninitialized constant Rake::DSL。当然我在这个问题之前搜索了stackoverflow,并且我创建了一些有用的帖子,例如这一个:https://stackoverflow.com/a/6686628/698919

不幸的是,在上面的修复之后,我仍然会收到另一个错误,这些错误在任何帖子中都没有提到:

    rake gems:install
    /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/file_utils.rb:9: warning: already       initialized constant RUBY
    /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/file_utils.rb:86: warning: already                 initialized constant LN_SUPPORTED
    rake aborted!
    undefined method `deprecate' for #<Rake::Application:0x7f4c3b3eeb38>
    /home/arti/domeny/domain/ror/Rakefile:8

我的Rakefile:

    require(File.join(File.dirname(__FILE__), 'config', 'boot'))
    require 'rake/dsl_definition'
    require 'rake'
    require 'rake/testtask'
    require 'rake/rdoctask'
    require 'tasks/rails'

我也尝试将Rake降级到0.8.7版本。之后,rake任务正常工作,但其他宝石没有工作,我不得不回到最新版本的rake(0.9.2.2)。我知道我应该尽快迁移到最新版本的Rails,但现在我需要临时修复。我可以在没有迁移的情况下处理,但我需要rake来通过thinking_sphinx索引模型。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。这是适当的Rakefile:

    require(File.join(File.dirname(__FILE__), 'config', 'boot'))
    require 'rake/dsl_definition'
    require 'rake'
    include Rake::DSL
    require 'rake/testtask'
    require 'rdoc/task'

    require 'tasks/rails'

    begin
      require 'thinking_sphinx/tasks'
    rescue LoadError
      puts "You can't load Thinking Sphinx tasks unless the thinking-sphinx gem is $
    end