【发布时间】:2021-10-09 00:23:10
【问题描述】:
我今天开始学习 ruby,但我很难理解符号以及如何正确使用它们。
现在我在一个简单的服务器和网站上工作,当我在远程服务器上测试时,我使用:TLSv1 证书,在我的本地机器上使用:SSLv23 证书,因为它不需要还有什么。
因此,在这些不同的环境中进行测试时不必更改证书——因为我可能忘记更改——我尝试为它们设置一个标志,如下所示:
if ENV['environment'] == 'development'
ssl_method = ":SSLv23"
else
ssl_method = ":TLSv1"
end
response = HTTParty.get('mywebsite.com/', :ssl_version => ssl_methos.to_sym)
它不工作。当我尝试连接到 localhost 时,它会返回此错误:
undefined local variable or method `ssl_method' for #<service> Did you mean? method
我可以使用什么替代方法?
更新
嗯,我不知道是否有更好的选择,所以我改变了这个并开始工作。
if ENV['environment'] == 'development'
$ssl_method = "SSLv23"
else
$ssl_method = "TLSv1"
end
response = HTTParty.get('mywebsite.com/', :ssl_version => $ssl_method.to_sym)
我忘记从字符串中删除:,我不得不使用$ 来定义为全局变量。我是一个 python 人,所以我从没想过这里的全局变量会有所不同。
【问题讨论】:
-
请在 ruby 中寻找变量作用域,了解何时使用哪种作用域。 $ 变量有效,但强烈建议不要使用,因为全局变量可以在 ruby 应用程序中的任何位置更改。尝试在 if 块之前初始化本地变量。
标签: ruby-on-rails ruby symbols httparty