Sublime文本无法理解gets.chomp

我使用Sublime Text在ruby中编写了这个简单的程序,出于某种原因,如果我使用Sublime文本内置系统构建它,那么我得到以下错误

`deposit': undefined method `chomp' for nil:NilClass (NoMethodError) 

如果我使用cmd运行它,它运行得很好。

 class BankAccount def initialize(name) @transactions = [] @balance = 0 end def deposit print "How much do you want to deposit?" amount = gets.chomp @balance += amount.to_f puts "$#{amount} is deposited" end def show_balance puts "Your balance is #{@balance}" end end bank_account = BankAccount.new("Rohit Begani") bank_account.class # => BankAccount bank_account.deposit bank_account.show_balance 

Sublime无法自行处理交互式输入。 您可以通过SublimeREPL运行脚本,也可以创建自定义构建系统以打开命令提示符,然后运行代码。 幸运的是,这并不太难。 在Sublime中创建一个具有以下内容的新文件:

 { "cmd": ["start", "cmd", "/k", "c:/ruby193/bin/ruby.exe", "$file"], "selector": "source.ruby", "shell": true, "working_dir": "$file_dir" } 

将其保存为Packages/User/Ruby_cmd.sublime-build ,其中Packages是选择Preferences -> Browse Packages...时打开的目录。 选择Tools -> Build System -> Ruby_cmd ,然后使用Ctrl B运行文件。

这应该适用于XP上的所有Windows版本。 它不适用于OSX或Linux,因为它们没有startcmd程序……

Interesting Posts