【发布时间】:2016-06-03 23:13:47
【问题描述】:
有没有办法在不访问互联网的情况下分发 Ruby gem,只需捆绑安装在开发人员电脑上的 gem?
这是为了在我们的组织内部部署,对互联网的访问受到严格限制。所有电脑都运行 Windows7 和 Ruby1.9.3 和 Bundler 1.11.2
我对 git 或 bundler 几乎没有经验。 不使用 Rails,但使用了一些其他的 gem,例如 activerecord 和 logger。
我尝试了什么:
我用我的 rb 创建了一个文件夹。脚本和带有所需 gem 的 .gemspec 文件,然后我执行了bundle gem name_of_the_gem_i_want_to_make,但收到了错误Errno::ENOENT: No such file or directory - git config user.name。
过去我创建了一个 git 帐户并做了一些实验,但我不想使用它。
过去我尝试使用 jRuby 和 Warble 来生成 JAR,但在这种情况下,我想坚持使用 MRI Ruby。
我的开发电脑上有互联网连接,但我想部署脚本的一些电脑或服务器 - 更重要的是它们所依赖的 gem - 没有。 不过,Ruby 已经随处安装了。
我想要一种简单的方法来从我的开发电脑收集所有需要的文件并将这些文件传输到目标电脑。 我可以压缩我的 Ruby 文件夹并将其解压缩到其他地方,但是我有很多我不需要的文件。
你能给我我需要使用的命令或给我一个解释如何做到这一点的网站吗?我在网上阅读了很多关于捆绑器的信息,但没有找到这种工作方式。 无法想象其他开发者没有同样的问题,并且存在一个通用的解决方案。
编辑:
我通过执行gem build mygem.gemspec 设法创建了一个gem,但它只有我自己的脚本,不需要gem。
编辑:听从米海的建议,删除了之前的尝试。
创建了一个子文件夹 vendor/gems 并在那里复制了 2 个 gemfile。
现在我可以使用以下 Gemfile 执行 bundle package 和 bundle install --no-deployment。
gem 'active_record', '4.1.1', :path => 'vendor/gems'
gem 'logger', '1.2.8', :path => 'vendor/gems'
现在的问题:如何将它部署到另一台电脑上?复制文件夹中的所有内容并在目标 PC 上执行 bundle install --local ?或者有没有办法将所有东西捆绑在一个 gem 中,以便在目标电脑上我可以做 gem install mygem --local ? gem build mygem 不包含捆绑包中的任何内容。
【问题讨论】:
标签: ruby git deployment bundler