【发布时间】:2012-04-11 11:02:12
【问题描述】:
我正在尝试使用以下代码在终端中接受文件作为参数,然后将读取该文件并使用其内容更新body 变量。如果文件未传入,那么我希望提示用户可以输入自己的正文副本。
require 'posterous'
Posterous.config = {
'username' => 'name',
'password' => 'pass',
'api_token' => 'token'
}
include Posterous
@site = Site.primary
#GETS POST TITLE
puts "Post title: "
title = STDIN.gets.chomp()
if defined?(ARGV)
filename = ARGV.first
end
if (defined?(filename))
body = File.open(filename)
body = body.read()
else
puts "Post body: "
body = STDIN.gets.chomp()
end
puts body
当我在不传递文件的情况下运行程序时,我会得到这个返回:
Post title:
Hello
posterous.rb:21:in `initialize': can't convert nil into String (TypeError)
from posterous.rb:21:in `open'
from posterous.rb:21:in `'
我对 ruby 比较陌生,因此不是最擅长的。我试过交换很多东西并改变东西,但无济于事。我做错了什么?
【问题讨论】:
标签: ruby command-line-arguments posterous