【问题标题】:How can I alter a gem on heroku?我怎样才能改变heroku上的宝石?
【发布时间】:2015-02-15 23:27:41
【问题描述】:

我最近将我的应用程序部署到了 heroku。它使用设计,我必须更改 after_sign_up_path 以便在有人注册后正确重定向到设置的页面。这在本地运行良好,但是当我在 heroku 上部署时,它会安装原始的未修改设计 gem。

有谁知道修改heroku上的gem的方法,或者让它使用我的供应商文件夹中修改后的gem?

谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby heroku devise gem


    【解决方案1】:

    因此,总的来说,在 heroku 上部署您的应用程序与在其他任何地方部署应用程序应该没有什么不同。

    一个不同之处在于,在 heroku 上,您可能在“生产”环境设置中运行,而在本地“开发”环境设置中运行。如果这是问题所在,您也可以在本地生产环境中运行。

    但我不这么认为。当您说您“更改”了 Devise 时,您的意思是您实际上在 Devise gem 源代码中编辑了源代码吗?

    这不是一个好习惯。当一个新版本的 Devise 出现时,可能带有安全补丁,你会怎么做?重新定制新版本?这不是一个很好的维护计划。如果你真的想这样做,你可以。最好的方法可能是在 git repo(在 github 或其他任何地方)中创建 Devise gem 的分支,对其进行自定义并将您的自定义提交到 repo,然后从您自己的 git repo 中指向您自定义的 Devise 版本您的 Gemfile 与 gem 'devise', :git => 'http://some.git.repo.clone.url.org'

    但这是个坏主意。

    Devise 可能已经通过配置支持您的用例,而不是通过编辑 Devise 源代码。大多数有经验的开发人员会认为这是实现您想要的更可取的方式。

    在这种情况下,您应该在自己的本地应用程序中提供 after_signup_path 方法覆盖,而不是修改设计源中的默认实现。谷歌了解更多信息,或咨询the URL Finks provides in another answer,或发布另一个问题,专门询问如何用设计做你想做的事情(它实际上与heroku无关),尽可能具体地说明你想要完成的事情。

    【讨论】:

    • 我建议您删除有关开发/生产的部分,因为它与 OP 的问题无关。
    • 我认为这是相关的,因为我认为这是最常见的原因之一,对于新手来说,“它不能在 heroku 上工作,但在我的本地机器上工作”。我不认为这就是 OP 发生的事情,但他的描述有点含糊,所以我可能是错的,其他人后来提出这个问题是“我怎样才能改变一个宝石heroku" 可能会发现提示开发/生产问题很有用。
    【解决方案2】:

    假设您将 Devise 分叉到您的 github 帐户,您可以通过执行以下操作将您的 Gemfile 指向它:

    gem "devise", :git => "git://github.com/user/devise.git", :branch => "my-awesome-branch"
    

    顺便说一句,我建议你重写一些设计方法而不是破解 gem,但这只是我的 2cents。

    【讨论】:

      【解决方案3】:

      这可能无法回答您的问题,但根据设计 wiki,您无需更改 gem 即可获得您喜欢的重定向行为,您只需覆盖应用程序控制器中的 after_sign_in_path_for 方法。 https://github.com/plataformatec/devise/wiki/How-To%3A-Redirect-to-a-specific-page-on-successful-sign-in-and-sign-out

      例子:

      def after_sign_in_path_for(resource)
        current_user_path
      end
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-12
      • 2022-10-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2022-07-07
      • 2018-12-12
      相关资源
      最近更新 更多