问题
I am deploying my rails app to a linux server and i have some of the rake tasks missing inlcuding rake gems:install and rake db
I am running rails 2.3.4 from GEM.
Why is this?
How do I fix this? can I update somehow?
they are missing from 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
my rake file contains this:
# 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'
How do I add the gems and db rake tasks? and why are they missing?
回答1:
What is the output of rake -T
? This should list all avaiable tasks. In a RoR application, the Rakefile
defines your tasks.
You can update gems using gem update
.
回答2:
Check your Capfile, if you are in fact running the gems:install from Capistrano. Apparently, the way to do this is to ensure you're in the right directory internally when running 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
You could also always specify the Rakefile to be sure using the -f [FILE] option in front of the rake command.
回答3:
You could try updating your Rails install, or reinstalling rails altogether by passing the --force
flag. Do you have any other projects for which this command works? Check the rake files from those projects. It looks like your rakefile is the same as mine though... Is this project originally based on an older version of rails? What Gem version are you running? You might need to do a gem update --system
. All these are possibilities.
回答4:
I suppose you could always recreate your project. Annoying but always seems to help worst case scenario.
At least that'll give you an idea of whether or not it's the project or something in some kind of dependencies issue.
回答5:
If you are using a rails app, you also have rake tasks defined in lib/tasks/SOME_TASK.rake
if you define the SOME_TASK it will then show up when you run rake -T and be an available command.
来源:https://stackoverflow.com/questions/1769874/how-to-build-task-gemsinstall