Capistrano 3.0 Rails 5.0.0数据库自定义任务

时间:2017-01-01 15:05:17

标签: ruby-on-rails ruby capistrano

我已经在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

1 个答案:

答案 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'