Help us understand the problem. What is going on with this article?

rails console で行える処理をコマンドラインから実行する。

More than 5 years have passed since last update.

Rails での DB に対して、内容チェックや内容変更の操作を shell スクリプトにしようと思った。

ネットで次の情報をみつけた。
- http://stackoverflow.com/questions/10313181/pass-ruby-script-file-to-rails-console

Pass ruby script file to rails console

  1. rails console -s で、手作業で行いたい操作を実行して動作を確認する。
  2. 上で入力したスクリプトを foo.rb に記載する。
  3. コマンドラインから $ bundle exec rails runner "eval(File.read 'foo.rb')" として実行することで、 foo.rb の内容を実行して、動作を確認する。
  4. コマンドラインで実行できるようになれば、   それを shell スクリプトから実行したり、 ruby から system() や open3() で実行することができる。

例:

  • devise でユーザー管理をしている rails アプリで、 特定のユーザーを削除する処理をコマンドライン化する。
  1. $ rails console -s で
    u = User.where('username=?', 'katoy')
    => ...
    u[0].delete
    => ...
    u = User.where('usernme=?', 'katoy')
    => [] 

   として、動作を確認する。

  1. foo.rb に処理を記載する。
    u = User.where('username=?', 'katoy')
    u.each {|user| user.delete }
    puts User.where('username=?', 'katoy').size
  1. コマンドラインで実行する。
    $ bundle exec rails runner "eval(File.read 'foo.rb')"
katoy
就活中 (2013-03-01〜) java, ruby, nodejs, html5, unix, MacOS が使える技術者です。 (MacBookPro, 10.9.4 で作業してます。2014-01 から)
https://github.com/katoy/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした