使用Heroku的环境变量和Rails

时间:2014-09-08 02:19:05

标签: ruby-on-rails heroku

当在数据库中创建新项目时,我还存储了一个可以被引用以共享项目的链接。我存储以下变量。

self.shareLink = "http://localhost:3000/#{self.slug}"

我在使用典型的Root函数时遇到问题,因为它排除了“http://”部分。

因为它硬编码,我觉得我做错了,因为当我最终投入生产时需要更新localhost。

我正在使用Heroku并开始尝试使用已定义的环境变量加入self.slug,但这也感觉不正确,我想知道是否有人可以提供一些见解。

1 个答案:

答案 0 :(得分:0)

尝试:

self.shareLink = request.protocol + request.host_with_port + '/' + self.slug

或者如果您不想要端口:

self.shareLink = request.protocol + request.host + '/' + self.slug

<强>更新

由于您现在声明在模型中需要此功能,因此上述功能不起作用,因为模型无法访问请求。

因此,您可以将其添加到应用程序控制器中,以使其随处可用:

before_filter :save_request

def save_request
  Thread.current[:request] = request
end

然后在你的模型中做这样的事情来访问它:

def my_method
  request = Thread.current[:request]
  self.shareLink = request.protocol + request.host_with_port + '/' + self.slug
end