如何构建任务'gems:install'

时间:2009-11-20 11:26:10

标签: ruby-on-rails linux deployment rubygems capistrano

我正在将我的rails应用程序部署到linux服务器,并且我有一些rake任务没有包含rake gems:install和rake db

我正在从GEM运行rails 2.3.4。

为什么会这样?

我该如何解决这个问题?我能以某种方式更新吗?


rake -T list

中缺少它们
rake apache2                   # Build Apache 2 module
rake clean                     # Remove compiled files
rake clobber                   # Remove all generated files
rake default                   # Build everything
rake doc                       # Generate all documentation
rake doxygen                   # Generate Doxygen C++ API documentation if ...
rake doxygen:clobber           # Remove generated Doxygen C++ API documenta...
rake doxygen:force             # Force generation of Doxygen C++ API docume...
rake fakeroot                  # Create a fakeroot, useful for building nat...
rake nginx                     # Build Nginx helper server
rake package                   # Build all the packages
rake package:clean             # Remove package products
rake package:debian            # Create a Debian package
rake package:force             # Force a rebuild of the package files
rake package:gem               # Build the gem file passenger-2.2.4.gem
rake rdoc                      # Build the rdoc HTML Files
rake rdoc:clobber              # Remove rdoc products
rake rdoc:force                # Force a rebuild of the RDOC files
rake sloccount                 # Run 'sloccount' to see how much code Passe...
rake test                      # Run all unit tests and integration tests
rake test:cxx                  # Run unit tests for the Apache 2 and Nginx ...
rake test:integration          # Run all integration tests
rake test:integration:apache2  # Run Apache 2 integration tests
rake test:integration:nginx    # Run Nginx integration tests
rake test:oxt                  # Run unit tests for the OXT library
rake test:rcov                 # Run coverage tests for the Ruby libraries
rake test:restart              # Run the 'restart' integration test infinit...
rake test:ruby                 # Run unit tests for the Ruby libraries

我的rake文件包含:

# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

require(File.join(File.dirname(__FILE__), 'config', 'boot'))

require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'

require 'tasks/rails'

如何添加gems和db rake任务?他们为什么失踪?

5 个答案:

答案 0 :(得分:6)

rake -T的输出是什么?这应该列出所有可用的任务。在RoR应用程序中,Rakefile定义了您的任务。

您可以使用gem update更新宝石。

答案 1 :(得分:4)

检查你的Capfile,如果你实际上在运行gems:从Capistrano安装。显然,执行此操作的方法是确保在运行Capistrano时内部位于正确的目录中。

namespace :gems do
  desc "Install gems"
  task :install, :roles => :app do
    run "cd #{current_path} && #{sudo} rake RAILS_ENV=production gems:install"
  end
end

您也可以始终使用rake命令前面的-f [FILE]选项指定Rakefile。

答案 2 :(得分:0)

您可以尝试更新Rails安装,或通过传递--force标志完全重新安装rails。你有这个命令有效的其他项目吗?检查这些项目中的rake文件。看起来你的rakefile和我的相同......这个项目最初是基于较旧版本的rails吗?你在运行什么Gem版本?您可能需要执行gem update --system。所有这些都是可能的。

答案 3 :(得分:0)

如果您使用的是rails应用程序,还可以在lib / tasks / SOME_TASK.rake中定义rake任务

如果你定义了SOME_TASK,那么当你运行rake -T并且它是一个可用的命令时它会出现。

答案 4 :(得分:0)

我想你总是可以重新创建你的项目。令人讨厌,但似乎总是帮助最坏的情况。

至少可以让你了解它是否是项目或某种依赖性问题。