使用Ruby on Rails,如何打开Rails控制台并自动运行命令?

时间:2014-08-05 14:44:41

标签: ruby-on-rails ruby bash rails-console

修改:之后控制台应保持打开状态。我不想在控制台之外运行控制台命令。

我从Bash提示符中打开这样的Rails控制台:bundle exec rails console

每次打开它时,我都需要运行如下命令:SomeModule::SomeClass.someMethod('myString')

我想将这两个命令组合成一个看起来像这样的命令:bundle exec rails console -s myString(或者更可能是一个紧凑的Bash函数)。

我尝试了bundle exec rails console && SomeModule::SomeClass.someMethod('myString')bundle exec rails console; SomeModule::SomeClass.someMethod('myString'),但这些都没有用。

2 个答案:

答案 0 :(得分:0)

我正在使用marco-polo gem来达到这个目的。将gem添加到Gemfile,创建.irbrc.rb并向其添加SomeModule::SomeClass.someMethod('myString')

UPD:此外,如果您不希望在运行命令后打开控制台,只需使用rails runner:

bundle exec rails runner "SomeModule::SomeClass.someMethod('myString')"

答案 1 :(得分:0)

为什么你想在rails控制台中使用它? Rails有rake任务,可以定义如下

namespace :pick do
  desc "Pick a random user as the winner"
  task :winner => :environment do
    puts "Winner: #{pick(User).name}"
  end

  desc "Pick a random product as the prize"
  task :prize => :environment do
    puts "Prize: #{pick(Product).name}"
  end

  desc "Pick a random prize and winner"
  task :all => [:prize, :winner]

  def pick(model_class)
    model_class.find(:first, :order => 'RAND()')
  end
end

由rake pick执行:胜利者。您可以在task :prize => :environment doend

中编写任何ruby代码

点击http://railscasts.com/episodes/66-custom-rake-tasks

了解详情

您可以在config/initializers/内编写初始化程序,并有条件地指定要运行的代码,

if defined?(Rails::Console)
 # in Rails Console
else
 # Not in Rails Console
end