railsでサイトを構築した際に、cronに登録する処理をrails runnerで書いたのですが、optparseを使用して弊害が出たのでメモ。
根本的に-eをスルーするやり方は分からないですが、-eもoptparseで定義してやればとりあえずは実行できる模様。
-e productionなんか拾ってどうすんだって話ですが、こういう事もあるんだということで。
引数を綺麗に拾ってくれるoptparse
rubyでコマンドラインツールを作る時に便利なoptparseですが、rails runnerでoptparseを使って引数を拾う場合「-e production」の部分もしっかり仕事してくれるのでエラーが発生しました。/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.2.3/lib/rails/commands/runner.rb:53:in `eval': invalid option: -e (OptionParser::InvalidOption) from (eval):1:in `<top (required)>' from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.2.3/lib/rails/commands/runner.rb:53:in `eval' from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.2.3/lib/rails/commands/runner.rb:53:in `<top (required)>' from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.2.3/lib/rails/commands.rb:64:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.2.3/lib/rails/commands.rb:64:in `<top (required)>' from script/rails:6:in `require' from script/rails:6:in `<main>'
根本的に-eをスルーするやり方は分からないですが、-eもoptparseで定義してやればとりあえずは実行できる模様。
options = {} OptionParser.new { |o| o.banner = "Usage: #{$0} [options]" o.on("-e [value]", "未設定") { |v| options[:e] = v } o.on("-f", "force") { |v| options[:force] = v } o.on("--list", "list") { |v| options[:list] = v } }.parse!(ARGV.dup)
-e productionなんか拾ってどうすんだって話ですが、こういう事もあるんだということで。
コメント
コメントを投稿