我已经在Capistrano的Ubuntu服务器上部署了Rails应用程序。但是,我正在尝试运行我创建的自定义任务,并且在< lib / tasks'中。我尝试通过执行
使其工作cap production db:views
好像这是一项自定义任务,但显然它没有起作用
盖帽中止了! 不知道如何建立任务' db:views'
文件为sql_views.rake
,此任务适用于数据库中的创建视图
namespace :db do
desc "Update and create SQL views"
task :views => :environment do
Dir["#{Rails.root}/db/sql_views/*.sql"].each do |file_name|
STDERR.puts "Applying the SQL view at #{file_name}"
source_file = File.new(file_name, 'r')
if source_file and (sql_content = source_file.read)
ActiveRecord::Base.transaction do
# Each statement ends with a semicolon followed by a newline.
sql_lines = sql_content.split(/;[ \t]*$/)
if sql_lines.respond_to?(:each)
sql_lines.each do |line|
ActiveRecord::Base.connection.execute "#{line};"
end
end
end # transaction
end
end # Dir.each
end # task
end
答案 0 :(得分:0)
如果您使用cap install
生成Capfile
,则应显示以下行:
# Load custom tasks from `lib/capistrano/tasks` if you have any defined
Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
所以它正在lib/capistrano/tasks
查找自定义任务。
将lib/tasks/sql_views.rake
移至lib/capistrano/tasks/sql_views.rake
或者只导入每个佣金任务:
import 'lib/tasks/sql_views.rake'