RoR - MySQL - 编写一个 rake 任务以继承另一个 sql 文件

RoR - MySQL - Writing a rake task to inherit from another sql file

我从终端使用以下命令:

mysql -u root -p sample_development < sample.sql

有没有一种简单的方法可以让我在 rake 任务中包含这个命令?我找到了一些旧的答案,Is there a rake task for backing up the data in your database?,其中包括大约 30 行代码,但是有没有更简单的方法将这个 liner 转换为 rake 任务?

提前致谢。

Ruby 中有一些 different ways 到 运行 命令行指令。一个非常简单的解决方案可能如下所示(注意反引号):

task :import do
  # some code
  `mysql -u root -p sample_development < sample.sql`
  # more code
end

您要求的是 rake 任务,但 link 指的是 capistrano 任务。 我猜你想 运行 在本地导入,所以 rake 任务是正确的选择。

Rake 任务写在 Ruby 中。 您可以使用以下命令在 ruby 中嵌入任何 shell 命令:

rake 任务可能是这样的:

    # lib/tasks/db.rake
    namespace :db do
      task import: :environment do
        `mysql -u root -p sample_development < sample.sql`
      end
    end

像这样使用它:

    $ rake db:import