Rubyファイルをfoo.rbをレールコンソールに渡す方法はありますか?コンソールがファイルを実行するための環境を起動した後に期待される結果が得られます。ルビースクリプトファイルをレールコンソールに渡す
または、コマンドプロンプトから起動されたrails環境でファイルを実行できる方法。
Rubyファイルをfoo.rbをレールコンソールに渡す方法はありますか?コンソールがファイルを実行するための環境を起動した後に期待される結果が得られます。ルビースクリプトファイルをレールコンソールに渡す
または、コマンドプロンプトから起動されたrails環境でファイルを実行できる方法。
、@MestreLionから撮影された、このソリューションがサポートされています。
rails r PATH_TO_RUBY_FILE
非常に簡単です。
あなたは
bundle exec rails runner "eval(File.read 'your_script.rb')"
UPDATEを使用することができます。
我々はまた、最近多くを使用して、スクリプト自体の中からレールの環境をロードすることですされている何。
#!/usr/bin/env ruby
require "/path/to/rails_app/config/environment"
# ... do your stuff
script/console --irb=pry <test.rb> test.log
、シンプル汚い、最後にプロセスをブロックし、それは私が欲しかったまったく同じ仕事をしていません:doit.rb
を考えてみましょう。
内load
でそれを実行することで、どれもEVAL-取得していない(スタンドアロンスクリプトを実行するために期待されるようにきれいで、理想的な見えましたEDまたは<リダイレクト経由パイプ)が、最終的には、これは私にとっては完璧に動作します:あなたのスクリプトの先頭に
(Railsのための3)
インサート:
#!/usr/bin/env ruby
APP_PATH = File.expand_path(appdir = '/srv/staging/strat/fundmgr/config/application', __FILE__)
require File.expand_path(appdir + '/../boot', __FILE__)
require APP_PATH
# set Rails.env here if desired
Rails.application.require_environment!
# your code here...
もちろん、APP_PATH行に独自のRailsアプリパスを設定します。
そのように、私は、任意のインタラクティブirb
やrails c
を入力する手間を省くことができ、例えば前に、シェルプロンプトから私のscript.rbをテストすることができます。それをcrontabでスケジューリングする。
これは、コマンドラインパラメータもスムーズにサポートし、コードに到達する前にラッパーのレベルを最小限に抑えます。
rr() {
rails_root="$(bundle exec rails runner "puts Rails.root")"
rp="$(relpath "$1" "$rails_root")"
bundle exec rails runner "eval(File.read '$rp')"
}
relpath() {python -c "import os.path; print os.path.relpath('$1','${2:-$PWD}')";}
例:に基づいて
cd ~/rails_project/app/helpers
rr my_script.rb
@モリッツの
CREDITは
http://zerowidth.com/2011/03/18/standalone-script-runner-bin-scripts-in-rails.html
ここで私が使用しているハックだ(また、Railsの2例を示します)ここで答えてください。 File.read
の作業ディレクトリがRailsプロジェクトのルートなので、私はそれを変更しました。
私は、ルビースクリプトを助けるためにpythonを使用して、いくつかの深刻な異端だと知っています。しかし、私はrelpath
メソッドがルビーに組み込まれていませんでした。
クレジット:relpath()
が一方Convert absolute path into relative path given a current directory using Bash
レーキタスクの作成を検討してください。
レコードを作成したり、マイグレーションをサポートするコードの場合は、たとえば、this answerのようなレーキタスクを作成することがよくあります。
namespace :example do
desc "Sample description you'd see if you ran: 'rake --tasks' in the terminal"
task create_user: :environment do
User.create! first_name: "Foo", last_name: "Bar"
end
そして、端末の実行中:
lib/tasks/example.rake
で:たとえば
rake example:create_user
[私はRailsの環境でRubyのファイルを実行するにはどうすればよい?](HTTPの
可能な重複: //stackoverflow.com/questions/9757261/how-do-i-run-a-ruby-file-in-a-rails-environment) –