如何在我的Rails 2.3应用程序中保持捆绑宝石中的静态资源同步?

时间:2010-12-09 00:47:38

标签: javascript ruby-on-rails rubygems bundler

我正在研究Rails 2.3应用程序,并希望将我的一些静态资产(JS,CSS)重构为一个单独的gem。问题是Rails 2.3引擎不支持Rails 3引擎所做的公共目录,因此从应用程序访问这些文件的唯一方法就是复制它们。

我曾经想过要使用某种类型的“afterBundle”钩子,我可以用它来“捆绑安装”完成后自动复制资产。我看了一下Bundler的文档和来源,并没有找到像我在想的东西。其他人如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用Bundler的一个问题是,您现在有两个安装路径,gem installbundle install。即使您对Bundler进行了破解Bundler post安装操作,如果有人执行gem install,它也不会运行。 一种解决方案是使gemspec相对空,例如:

https://github.com/hedgehog/fog/blob/bundler/fog.gemspec

然后模拟gem install的安装后挂钩,实际上调用了bundle install

https://github.com/hedgehog/fog/commit/32878aaa9ef1fd3add148039fecd6e4059873d5d

通过这种方法,您可以在bundle install运行后添加安装后操作。

但是,通过向gem install添加安装后步骤,您重新介绍了开放问题 - 两个不同的安装路径,现在gem install执行的操作比bundle install更多(安装后的步骤)而不是{{ 1}}确实。

另见: http://blog.costan.us/2008/11/post-install-post-update-scripts-for.html