How do I run a Ruby file in a Rails environment?

前端 未结 4 1343
名媛妹妹
名媛妹妹 2020-12-12 18:22

I want to run a Ruby file in the context of a Rails environment. rails runner almost does what I want to do, but I\'d like to just give it the file name and arguments. I\'m

相关标签:
4条回答
  • 2020-12-12 19:12

    The simplest way is with rails runner because you don't need to modify your script.

    http://guides.rubyonrails.org/command_line.html#rails-runner

    Just say rails runner script.rb

    0 讨论(0)
  • 2020-12-12 19:22

    This is an old question, but in my opinion I often find it helpful to create a rake task... and it's actually very easy.

    In lib/tasks/example.rake:

    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
    

    And then in the terminal run:

    rake example:create_user
    

    Locally this will be run in the context of your development database, and if run on Heroku it will be run while connected to your production database. I find this especially useful to assist with migrations, or modified tables.

    0 讨论(0)
  • 2020-12-12 19:28

    Runner runs Ruby code in the context of Rails non-interactively.

    From rails runner command:

    Usage: runner [options] ('Some.ruby(code)' or a filename)
    
        -e, --environment=name           Specifies the environment for the runner to operate under (test/development/production).
                                         Default: development
    
        -h, --help                       Show this help message.
    

    You can also use runner as a shebang line for your scripts like this:

    -------------------------------------------------------------
    #!/usr/bin/env /Users/me/rails_project/script/rails runner
    
    Product.all.each { |p| p.price *= 2 ; p.save! }
    -------------------------------------------------------------
    
    0 讨论(0)
  • 2020-12-12 19:29

    Simply require environment.rb in your script. If your script is located in the script directory of your Rails app do

    require File.expand_path('../../config/environment', __FILE__)
    

    You can control the environment used (development/test/production) by setting the RAILS_ENV environment variable when running the script.

    RAILS_ENV=production ruby script/test.rb
    
    0 讨论(0)
提交回复
热议问题