【发布时间】:2019-06-20 03:46:07
【问题描述】:
我以前有一些这种形式的脚本:
class Thing
def do_things
...
end
end
if __FILE__ == $0
Thing.new.do_things
end
我用rails runner 调用了它们。他们在使用 Rails 5.1 的 Heroku 上运行良好。当我升级到 rails 5.2 时,它们不再在 Heroku 上运行(静默退出,块未执行)。但它们仍然在我的开发环境(Ubuntu)中执行。
我使用脚本的相对路径运行它们(例如rails runner scripts/thing.rb)
导轨 5.2
Heroku
-
__FILE__:脚本的绝对路径(/app/scripts/thing.rb) -
$0:文件名(thing.rb)
开发环境(ubuntu)
两者都只包含文件名。
导轨 5.1
在这两种环境中,都只包含文件名。
【问题讨论】:
-
在Heroku上运行时,
__FILE__和$0的值是多少? -
@Stefan 我用更多细节更新了问题
-
所以区别在于,在 Heroku 上使用 Rails 5.2 时,
__FILE__的值是"/app/scripts/thing.rb",而使用 Rails 5.1 时,它的值是"thing.rb"? -
@Stefan 是的,没错
标签: ruby-on-rails ruby heroku ruby-on-rails-5.2