2017-04-20 1 views
0

を継承するためにrakeタスクを書く:を - MySQLの - 私はターミナルから次のコマンドを使用して別のSQLファイルから

mysql -u root -p sample_development < sample.sql 

はrakeタスクでこのコマンドを含め私の簡単な方法はありますか?いくつかの古い回答、Is there a rake task for backing up the data in your database?があります。これには約30行のコードが含まれていますが、この1つのライナーをレーキタスクに変換する簡単な方法はありますか?

ありがとうございます。

+0

なぜこの単純なコマンドをRakeタスクに変換したいのですか?あなたは何のために最適化していますか? 'system'コールかbackticksはオプションになりますか? – spickermann

+0

アプリを使い始める前にいくつかのセットアップ手順があります。私たちはいくつかの開発者を持っています - それらをすべて1つのレーキタスクに結合しようとしています。あなたの方法のいずれかを使用して周りの方法を教えてください – Mark

答えて

3

ruby​​からコマンドラインの命令を実行するには、いくつかのものがあります(different ways)。非常に簡単な解決策は、(バッククォートの点に注意してください。)次のようになります。

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

最も簡単な方法は常に最高です!多くのおかげで – Mark

2

あなたはrakeタスクを求めたが、Capistranoのタスクへのリンクreffersされています。 私はあなたのインポートをローカルで実行したいと思っています。そのため、レーキタスクが道のりです。

ルックタスクはRubyで書かれています。 あなたは使ってRubyで任意のシェルコマンドを埋め込むことができます。

これは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 
+0

正確に何を探していた - 多くのありがとう! – Mark

関連する問題