动态环境变量
Dynamic environment variables
我正在重构一些我认为有问题的代码,并且不确定处理此问题的最佳方法。
我的原码是:
def some_url
if Rails.env == "development"
url = "http://12.12.12.12/something/#{self.id}"
else
url = "https://www.#{ENV['DOMAIN']}/something/#{self.id}?trk=0&updated_at=#{self.updated_at}"
end
end
我不喜欢 if Rails.env == "development"
部分,我正在尝试将此 URL 提取到环境变量中。我的第一次尝试是:
def some_url
"#{ENV['DOMAIN']}/something/#{self.id}/#{ENV['URL_PARAMS']}"
end
一切都很好,直到我用 updated_at
结束。除了开发之外,我需要它用于每个环境。所以,我不能将它添加为环境变量,因为它是动态的。有条件地添加它没有意义,因为它并没有比我已经拥有的更好。关于如何处理这个问题有什么想法吗?
好吧,你有条件地需要参数,所以除了通过条件,我看不出有任何简单的方法来做到这一点。就个人而言,我可能会走这条路:
def some_url(params = {})
base_url = "#{ENV['DOMAIN']}/something/#{self.id}/#{ENV['URL_PARAMS']}"
params.merge!(updated_at: self.updated_at) unless Rails.env.development?
base_url << "?#{params.to_query}" unless params.blank?
end
我认为你需要一个条件。我能想到的唯一方法是使用正则表达式从您的 ENV 变量中匹配 "updated_at=" 并将其子化为 "updated_at=#{self.updated_at}"
像这样:
def some_url
"#{ENV['DOMAIN']}/something/#{self.id}/#{ENV['URL_PARAMS'].sub('updated_at=', "updated_at=#{self.updated_at}")}"
end
我正在重构一些我认为有问题的代码,并且不确定处理此问题的最佳方法。
我的原码是:
def some_url
if Rails.env == "development"
url = "http://12.12.12.12/something/#{self.id}"
else
url = "https://www.#{ENV['DOMAIN']}/something/#{self.id}?trk=0&updated_at=#{self.updated_at}"
end
end
我不喜欢 if Rails.env == "development"
部分,我正在尝试将此 URL 提取到环境变量中。我的第一次尝试是:
def some_url
"#{ENV['DOMAIN']}/something/#{self.id}/#{ENV['URL_PARAMS']}"
end
一切都很好,直到我用 updated_at
结束。除了开发之外,我需要它用于每个环境。所以,我不能将它添加为环境变量,因为它是动态的。有条件地添加它没有意义,因为它并没有比我已经拥有的更好。关于如何处理这个问题有什么想法吗?
好吧,你有条件地需要参数,所以除了通过条件,我看不出有任何简单的方法来做到这一点。就个人而言,我可能会走这条路:
def some_url(params = {})
base_url = "#{ENV['DOMAIN']}/something/#{self.id}/#{ENV['URL_PARAMS']}"
params.merge!(updated_at: self.updated_at) unless Rails.env.development?
base_url << "?#{params.to_query}" unless params.blank?
end
我认为你需要一个条件。我能想到的唯一方法是使用正则表达式从您的 ENV 变量中匹配 "updated_at=" 并将其子化为 "updated_at=#{self.updated_at}"
像这样:
def some_url
"#{ENV['DOMAIN']}/something/#{self.id}/#{ENV['URL_PARAMS'].sub('updated_at=', "updated_at=#{self.updated_at}")}"
end