Script/console custom prompt


#1

Hi,

I’m not able to use a custom prompt with script/console. I can’t seem to
change the prompt once I’m inside irb. I can only change by passing in
the --prompt arg to irb. However, it seems script/console has the simple
prompt hardcoded in the script. I hacked the script a little and it
seems to work, but I’m sure there is a more elegant way to do it.
Anyway:

irb = RUBY_PLATFORM =~ /mswin32/ ? ‘irb.bat’ : ‘irb’

require ‘optparse’
options = { :sandbox => false, :irb => irb, :prompt => ‘simple’ }
OptionParser.new do |opt|
opt.banner = “Usage: console [environment] [options]”
opt.on(’-s’, ‘–sandbox’, ‘Rollback database modifications on exit.’)
{ |options[:sandbox]| }
opt.on("–irb=[#{irb}]", ‘Invoke a different irb.’) { |options[:irb]|
}
opt.on("–prompt=[]", ‘Use a different prompt for irb.’) {
|options[:prompt]| }
opt.parse!(ARGV)
end

libs = " -r irb/completion"
libs << " -r #{RAILS_ROOT}/config/environment"
libs << " -r console_sandbox" if options[:sandbox]

ENV[‘RAILS_ENV’] = ARGV.first || ‘development’
if options[:sandbox]
puts “Loading #{ENV[‘RAILS_ENV’]} environment in sandbox.”
puts “Any modifications you make will be rolled back on exit.”
else
puts “Loading #{ENV[‘RAILS_ENV’]} environment.”
end
exec “#{options[:irb]} #{libs} --prompt-mode #{options[:prompt]}”