【问题标题】:Using Heroku's Environment Variable with Rails在 Rails 中使用 Heroku 的环境变量
【发布时间】:2014-09-09 12:57:41
【问题描述】:

在数据库中创建新项目时,我还会存储一个链接,可以引用该链接来共享该项目。我正在存储以下变量。

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

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

由于它是硬编码的,我觉得我做错了什么,因为当我最终推送到生产环境时需要更新 localhost。

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

【问题讨论】:

    标签: ruby-on-rails heroku


    【解决方案1】:

    试试:

    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
    

    【讨论】:

    • 我收到以下错误 undefined local variable or method 'request' 是否有我应该需要的 gem - 这也是在我的模型中定义的
    猜你喜欢
    • 1970-01-01
    • 2017-08-31
    • 2018-03-25
    • 2014-03-16
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多