Apakah ada cara untuk melewatkan file ruby, foo.rb ke konsol rel. Hasil yang diharapkan adalah setelah konsol memulai lingkungan rel untuk menjalankan file.
Atau cara lain yang memungkinkan saya untuk mengeksekusi file di lingkungan rel, dipicu dari command prompt.
ruby-on-rails-3
Haris Krajina
sumber
sumber
Jawaban:
Sebenarnya, cara termudah adalah menjalankannya dengan
load
di dalamrails console
sumber
Kamu bisa memakai
MEMPERBARUI:
Apa yang juga sering kami gunakan akhir-akhir ini adalah memuat lingkungan rel dari dalam skrip itu sendiri. Pertimbangkan
doit.rb
:Ini juga berfungsi jika skrip atau direktori kerja saat ini tidak ada di dalam direktori aplikasi rails.
sumber
f=File.new('path/to/file')
untuk menjalankan gunakan:f.rewind; eval f.readlines.join("\n");
eval(File.read ...)
bagian itu lagi. Rails menerima file Ruby sebagai argumen untukrails runner
:Usage: rails runner [options] [<'Some.ruby(code)'> | <filename.rb>]
rails r path/to/filename.rb
secara fungsional setara denganbundle exec rails runner
perintah yang disebutkan di atas.Sementara itu, solusi ini telah didukung.
Jauh lebih sederhana sekarang.
sumber
sederhana, kotor, dan memblokir proses di bagian akhir, tetapi melakukan pekerjaan persis seperti yang saya inginkan.
sumber
Pertimbangkan untuk membuat tugas menyapu.
Untuk kode yang saya perlukan untuk membuat catatan atau mendukung migrasi, misalnya, saya sering membuat tugas menyapu seperti itu dari jawaban ini . Sebagai contoh:
Masuk
lib/tasks/example.rake
:Dan kemudian di terminal jalankan:
sumber
Dari pendekatan yang disebutkan sebelumnya, tidak ada yang tampak bersih dan ideal seperti yang Anda harapkan untuk menjalankan skrip mandiri (tidak dievaluasi atau disalurkan melalui <redirection), tetapi akhirnya ini berfungsi sempurna untuk saya:
(untuk Rails 3)
Sisipkan di bagian atas skrip Anda:
Tentu saja, setel jalur aplikasi Rails Anda sendiri di baris APP_PATH.
Dengan cara itu, saya dapat menghindari keharusan untuk memasukkan apapun yang interaktif
irb
ataurails c
dan dapat menguji script.rb saya dari prompt shell, sebelumnya misalnya. menjadwalkannya di crontab.Ini dengan lancar mendukung parameter baris perintah, juga, dan meminimalkan tingkat pembungkus sebelum mendapatkan kode Anda.
CREDIT (juga menunjukkan contoh Rails 2)
http://zerowidth.com/2011/03/18/standalone-script-runner-bin-scripts-in-rails.html
sumber
Inilah retasan yang saya gunakan:
Contoh:
Berdasarkan jawaban @ moritz di sini. Saya mengubahnya, karena direktori kerja untuk
File.read
adalah root proyek Rails.Saya tahu ini adalah bid'ah yang serius, menggunakan python untuk membantu skrip ruby. Tetapi saya tidak dapat menemukan
relpath
metode yang dibangun ke dalam ruby.Kredit:
relpath()
diambil dari @MestreLion, Ubah jalur absolut menjadi jalur relatif berdasarkan direktori saat ini menggunakan Bashsumber