Bac*_*cko 36 ruby capistrano ruby-on-rails seed ruby-on-rails-3
我正在使用Ruby on Rails 3.0.9并且我希望播种生产数据库以便添加一些记录而无需重新构建所有数据库(即,不删除所有现有记录但只添加一些尚未存在的记录) .我想这样做是因为需要新数据才能使应用程序正常工作.
因此,由于我正在使用Capistrano gem,我cap -T在控制台中运行命令以列出所有可用命令并知道如何实现我的目标:
$ cap -T
=> ...
=> cap deploy:seed # Reload the database with seed data.
=> ...
Run Code Online (Sandbox Code Playgroud)
我不确定"使用种子数据重新加载数据库"中出现的"重新加载"这个词.句子.所以,我的问题是:如果我cap deploy:seed在本地机器上的控制台中运行命令,播种过程将删除生产数据库中的所有现有数据,然后填充它,或者该命令只是在我想要的数据库中添加新数据做?
Jav*_*dal 68
如果您使用的是bundler,那么capistrano任务应该是:
namespace :deploy do
desc "reload the database with seed data"
task :seed do
run "cd #{current_path}; bundle exec rake db:seed RAILS_ENV=#{rails_env}"
end
end
Run Code Online (Sandbox Code Playgroud)
它可以放在一个单独的文件中,例如lib/deploy/seed.rb并使用以下命令包含在deploy.rb文件中:
load 'lib/deploy/seed'
Run Code Online (Sandbox Code Playgroud)
小智 27
这对我有用:
task :seed do
puts "\n=== Seeding Database ===\n"
on primary :db do
within current_path do
with rails_env: fetch(:stage) do
execute :rake, 'db:seed'
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
capistrano 3,Rails 4
使用Capistrano 3,Rails 4和SeedMigrations,我在/ lib/capistrano/tasks下创建了一个Capistrano seed.rb任务:
namespace :deploy do
desc 'Runs rake db:seed for SeedMigrations data'
task :seed => [:set_rails_env] do
on primary fetch(:migration_role) do
within release_path do
with rails_env: fetch(:rails_env) do
execute :rake, "db:seed"
end
end
end
end
after 'deploy:migrate', 'deploy:seed'
end
Run Code Online (Sandbox Code Playgroud)
我的种子迁移现在完全独立于模式迁移,并在db:migrate进程之后运行.真高兴啊!:)
尝试在deploy.rb中添加类似的内容:
namespace :deploy do
desc "reload the database with seed data"
task :seed do
run "cd #{current_path}; rake db:seed RAILS_ENV=#{rails_env}"
end
end
Run Code Online (Sandbox Code Playgroud)
cap deploy:seed应该基本上是一个参考rake db:seed.它不应该删除现有数据,除非您在其中指定了这样做seed.rb.
"Reload"这个词的最佳假设:seed是无状态命令,我不会自动知道它停止的位置,就像常规的rails迁移一样.因此从技术上讲,每次运行时,你都会"重新加载"种子.......一个疯狂的猜测,但听起来不错,不是吗?
请查看Javier Vidal以下答案
在与capistrano-rails gem作者讨论后,我决定在一个单独的gem中实现这种任务.我认为这有助于遵循DRY的想法而不是一遍又一遍地执行相同的任务.
我希望它可以帮到你:https://github.com/dei79/capistrano-rails-collection
| 归档时间: |
|
| 查看次数: |
34401 次 |
| 最近记录: |