我如何改变heroku上的宝石?

时间:2015-02-15 23:27:42

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

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

有没有人知道在heroku上修改gem的方法,或者让它在我的vendor文件夹中使用修改后的gem?

感谢。

3 个答案:

答案 0 :(得分:1)

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

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

顺便说一句,我建议你覆盖一些设计方法,而不是破解宝石,但这只是我的2cents。

答案 1 :(得分:1)

因此,一般来说,在heroku上部署应用程序不应该与其他任何地方不同。

一个区别是,在heroku上,您可能正在“生产”环境设置中运行,而在“开发”中本地运行。如果出现问题,您也可以在本地生产。

但我认为不是。当你说你“改变”Devise时,你的意思是你实际上编辑了Devise gem源本身的源代码吗?

这不是一个好习惯。当Devise的新版本出现时,或许有安全补丁,你打算做什么?重新定制新版本?这不是一个很好的维护计划。如果你真的想这样做,你可以。最好的方法是在git仓库中创建一个Devise gem的分支(在github或其他任何地方),自定义并将自定义提交到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无关),尽可能具体地说明你想要完成什么。

答案 2 :(得分:0)

这可能无法解答您的问题但是根据设计维基,您不必更改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