我正在研究Rails 2.3应用程序,并希望将我的一些静态资产(JS,CSS)重构为一个单独的gem。问题是Rails 2.3引擎不支持Rails 3引擎所做的公共目录,因此从应用程序访问这些文件的唯一方法就是复制它们。
我曾经想过要使用某种类型的“afterBundle”钩子,我可以用它来“捆绑安装”完成后自动复制资产。我看了一下Bundler的文档和来源,并没有找到像我在想的东西。其他人如何解决这个问题?
答案 0 :(得分:0)
使用Bundler的一个问题是,您现在有两个安装路径,gem install
和bundle 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