Ich versuche, den folgenden Code zu verwenden, um in einer Datei als Argument im Terminal zu akzeptieren, die dann gelesen und die body
Variable mit ihrem Inhalt aktualisiert wird. Wenn die Datei nicht übergeben wird, möchte ich die Eingabeaufforderung haben, wo der Benutzer seine eigene Textkopie eingeben kann.Akzeptieren von Befehlsargumenten in ein Ruby-Skript
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
Wenn ich das Programm ohne den Weg in eine Datei laufen bekomme ich diese zurückgegeben:
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 `'
Ich bin ziemlich neu in Ruby und damit bin nicht der Beste darin. Ich habe versucht, viele Dinge zu tauschen und Dinge zu ändern, aber ohne Erfolg. Was mache ich falsch?