Sublime文本无法理解gets.chomp

时间:2013-10-12 08:28:44

标签: ruby sublimetext 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

1 个答案:

答案 0 :(得分:3)

Sublime无法自行处理交互式输入。您可以通过SublimeREPL运行脚本,也可以创建自定义build system来打开命令提示符,然后运行代码。幸运的是,这并不太难。使用以下内容在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程序......