ssc*_*rus 15 console ruby-on-rails heroku ruby-on-rails-3
Heroku控制台不会在我的应用程序中运行循环(虽然它们可以在我的本地计算机上运行而且heroku允许采取个别操作).
@companies.each do |c|
SyntaxError: /home/heroku_rack/lib/console.rb:150: syntax error, unexpected $end
@companies.each do |c|
^
/home/heroku_rack/lib/console.rb:140:in `eval'
/home/heroku_rack/lib/console.rb:140:in `_eval'
/home/heroku_rack/lib/console.rb:73:in `block in process_command'
/usr/ruby1.9.2/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
Run Code Online (Sandbox Code Playgroud)
你知道为什么会出现这些错误吗?
Joh*_*non 29
这不是一个错误 - 它是Heroku让你通过heroku console
命令与你的应用程序交互的一个特性- 虽然看起来像一个完整的控制台,它根本不是.每个行都通过http传输并在按Enter键时进行评估,因此您无法实际使用多行命令,但这样可以正常工作;
User.all.each {|user| user.update_attributes(:active => true) }
Run Code Online (Sandbox Code Playgroud)
如果它不能写在一行上,你需要使用rake任务或类似的东西
编辑:包含正确的语法
适当的语法是(至少对于Heroku上的Ruby 1.9.2):
User.all.each {|user| user.update_attributes(:active => true)}
Run Code Online (Sandbox Code Playgroud)
使用John的方法对我来说不起作用(我第二次遇到这个问题所以是时候写一个适合其他人的答案).
顺便说一句,如果你想要多行代码,你必须将它全部作为一行传递,如下所示:
User.all.each {|user| user.some_attribute = true; user.some_other_attribute = false; user.save }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8710 次 |
最近记录: |