
原因是这样的,运维不开放正式环境数据库的alter权限,所以每次都要给他们把sql语句发过去,
由他们来操作。
https://github.com/capistrano/rails
Require everything (bundler, rails/assets and rails/migrations): # Capfile
require 'capistrano/rails'
Or require just what you need manually: # Capfile
require 'capistrano/bundler' # Rails needs Bundler, right?
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
参考的是https://github.com/capistrano/rvm/issues/49
Using the task pattern described before, capistrano/rvm gets required after capistrano/bundler. This makes capistrano use the command bundle exec ruby --version. This command would fail on the server when it is run inside a directory without a Gemfile. There are two ways to make this work: 1) Avoid using bundle exec for all ruby commands: Capfile task :require_rvm do
require 'capistrano/rvm'
end
task 'staging' => [:require_rvm] require 'capistrano/bundler'
config/deploy/staging.rb set :bundle_bins, %w(gem rake rails)
2) Require bundler the same way we require rvm: Capfile task :require_rvm do
require 'capistrano/rvm'end task :require_bundler do
require 'capistrano/bundler'
end task 'staging' => [:require_rvm, :require_bundler]
task 'production' => [:require_bundler]
以下是最终修改后的Capfile
task :require_rails do
require 'capistrano/rails'
end
# require 'capistrano/rvm'
require 'capistrano/rbenv'
# require 'capistrano/chruby'
task :require_rails_without_migrations do
require 'capistrano/bundler'
require 'capistrano/rails/assets'
end
# require 'capistrano/rails/migrations'
# require 'capistrano/passenger' task :staging => [:require_rails]
task :production => [:require_rails_without_migrations]