我在本地机器上使用 ruby 2.6.5。我也在 heroku 机器上使用相同的 ruby 版本。
但是我在使用heroku时遇到了奇怪的错误。
如果我定义了一个方法,如:
def current_admin
@current_admin ||= 'yana'
end
它在我的机器上完美运行,在 heroku 上它会引发 NameError:
NameError (`@` is not allowed as an instance variable name)
但是当我这样做时:
def current_admin
return @current_admin if defined?(@current_admin)
@current_admin = 'yana'
end
它适用于两台机器。
导致第一个语法在heroku上失败的区别到底是什么?
* 更新 *
我为使其在heroku上工作而制作的差异。
def current_account
- @current_account ||= AccountSession.find
+ return @current_account if defined? @current_account
+
+ @current_account = AccountSession.find
end