- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在对 Heroku 进行一些更改后,我注意到有关 vendor/bundle
的警告。 (请参阅下面的 警告 )。
如果根据警告,它应该从 Git 跟踪中“删除”,那么这个目录的目的是什么?
为什么不是 vendor/bundle
自动 .gitignore
默认情况下是 Rails 吗?
我应该跑 bundle pack
? (实际上是 bundle package
吗??)bundle pack
周围有什么优缺点| (相对于 development
和 production
)?
为了让这更令人困惑,Ryan McGeary 有一篇受欢迎的博客文章,标题为 "Vendor Everything" Still Applies强烈主张运行 bundle install --path vendor
和 echo 'vendor/ruby' >> .gitignore
和包装 gem vendor/cache
通过运行 bundle package
.任何与我的其他关注相关的问题都将不胜感激。
谢谢你。
-bash> git push production master
...
-----> Heroku receiving push
-----> Ruby/Rails app detected
-----> WARNING: Removing `vendor/bundle`.
Checking in `vendor/bundle` is not supported. Please remove this directory
and add it to your .gitignore. To vendor your gems with Bundler, use
`bundle pack` instead.
-----> Installing dependencies using Bundler version 1.2.1
Running: bundle install --without development:test --path vendor/bundle --binstubs bin/ --deployment
Using rake (0.9.2.2)
Using i18n (0.6.0)
...
最佳答案
如果您有 vendor/bundle
然后在您的项目中的目录 you must have run the bundle
command with the --path vendor/bundle
argument .这会将您项目的所有 gem(在 Gemfile
中列出)的文件加载到 vendor/bundle
中。目录中的本地项目,而不是系统 gem 位置。您可以这样做以将项目的 gem 与任何其他项目完全隔离。
Bundler 擅长解决所有依赖关系,因此没有必要使用 --path
但是有些人选择这样做是因为他们希望将他们的 gem 与他们的项目分开并组织起来。这也意味着本地机器上的 bundler 的设置方式与 Heroku 使用 bundler 的方式相同。
使用此选项,您仍会从 rubygems
下载所有 gem 。服务器每次运行 bundle
命令。
bundle package
更进一步,实际上是从 rubygems
下载原始 gem 文件。并将它们缓存到 vendor/cache
目录。这意味着您不再需要连接到 rubygems
运行 bundle 命令,因为它将使用打包的文件作为源。如果您需要更新 gem 版本,则需要连接到 rubygems
在第一次请求时收集新版本。使用 bundle package
当然需要额外的磁盘空间,这取决于具体情况,这可能是也可能不是问题。每次推送到 Heroku 时,它也会增加部署时间和带宽要求。
Heroku 运行 bundle
每次执行命令时git push
,阅读您的 Gemfile.lock
并安装应用程序运行所需的 gem。默认情况下 --path vendor/bundle
选项被使用。这样每个应用程序都有一组与 Heroku 上所有其他应用程序分开的 gem 文件。如果您有 vendor/bundle
源代码管理中的目录,然后将其推送到 Heroku,然后您可以看到存在重大冲突的可能性,因为它然后尝试将 gem 加载到 vendor/bundle
中。已经存在的目录。如果它被推送,那么 Heroku 会删除 vendor/bundle
运行前的目录 bundle install
消除这些潜在的冲突。如果是这种情况,那么离开 vendor/bundle
将浪费部署时间和带宽。在版本控制下,最好将其添加到您的 .gitignore
.
如果您想在 Heroku 上完全控制您的 gem,请使用 bundle package
命令并确保 vendor/cache
目录受源代码控制。 Heroku 运行时 bundle install
它将使用 vendor/cache
的内容作为 gem 来源而不是使用 rubygems
.这是否有用取决于个人喜好、您正在构建的应用程序类型以及更新 gem 的频率。 Ryan McGeary 的帖子建议使用 bundle package
如果旧 gem 在将来的某个时候变得不可用,则很有用。对于不定期更新的项目/应用程序来说,这似乎是一个更大的问题。
从我的角度来看,我一般使用 --path vendor/bundle
使我的本地设置尽可能接近 Heroku 的设置。我把vendor/bundle
进入我的项目 .gitignore
文件,我不打包 gems,因为我的项目相对定期更新。
Rails 有一个非常有限的 .gitignore
文件。您实际上需要自己构建所需的东西,这就是 vendor/bundle
的原因。默认情况下不包括在内。
我假设 Heroku 的意思是 bundle package
当他们说 bundle pack
.
关于ruby-on-rails - 供应商/bundle 的目的是什么? Heroku 告诉我删除它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12573596/
我正致力于通过 OAuth 合并外部 API,但对 expires_in 属性的用途有点迷惑。通过阅读,应该对 api token 的使用进行防御性编码,因为您应该预料到 token 在任何时候都可能
有人可以概述或总结一下 Spring 框架上下文中 bean 的用途吗? 我了解标准的 Java bean(没有 arg 构造函数、getter/setter,通常是序列化的),但 Spring be
使用 OpenGL 4.1 和 ARB_separate_shader_objects,我们能够在着色器程序中存储着色管道的不同阶段。众所周知,要使用这些,我们需要将它们附加到程序管道对象,然后绑定(
正如我从文档中了解到的那样,“MoveIteratorFactory”的目的是生成每一步都需要执行的 Action 。 “getSize”方法的移动子集有多大? “createOriginalMove
请解释 CMakeLists.txt 中这一行的目的是什么: 包括(InstallRequiredSystemLibraries) 我在 CMake 示例中看到这一行,但找不到好的解释,为什么我需要它
这里是新手。我仍在尝试理解在多个布局中运行单个进程或目的的概念。 例如,我想在我的申请中添加“提交后”功能。有一个包含标题、内容等文本框的主布局,以及一个链接到另一个布局以选择类别的按钮。我的问题是,
我在看 Box Oauth2.0 View Controller : https://github.com/box/box-ios-sdk-v2/blob/master/BoxSDK/OAuth2/B
我编写了一个将字符串复制到系统剪贴板的 Java 应用程序。构造函数使用 Clipboard.setContents(Transferable contents, ClipboardOwner own
阅读此文后:http://sourcemaking.com/design_patterns/command 我还是不太明白为什么我们需要这个。 最佳答案 想法是,如果命令被封装为对象,那么这些命令可以
我知道 c++ 中的模板是做什么的,但是今天我看到了一些奇怪的代码: template <> void swap(foo &a, foo &b) { a.name = b.name; a.
我不太明白 C# Collections 中 IEnumerator 的用途是什么。它的用途是什么,为什么要使用它? 我试着在线查看 http://msdn.microsoft.com/en-us/l
不幸的是,我今天做了一些代码考古(同时重构了一些旧的危险代码)并发现了这样的小化石: # line 7 "foo.y" 能在里面找到如此古老的宝藏,我完全惊呆了。我在 C 编程的网站上阅读了它。然而,
您能否澄清一下此注释的实际用途? - 如果我们没有使用数据库中的 SQL 表定义定义相应的约束,会发生什么情况。当我们尝试插入时,hibernate 会检查唯一性吗?或者这就是DB的目的吗?如果 hi
我在视频教程中看到过这段代码: const navToggle = ["Menu"].join(""); $(".site-header").prepend(navToggle); 我明白它的基本作用
我想知道这个成员函数的 scroll_to(TextBuffer::iterator& iter, double within_margin = 0)参数 within_margin。 API 是这样
我想知道是否可以将子目录提交到目录例如,假设您有 site.com/directory 可以将子目录提交到目录。我即将开始为希望她的网站在搜索引擎中排名靠前的客户进行一些搜索引擎优化。我知道实现此目的
STL 迭代器的用途是什么?为什么程序员要创造这个概念? 最佳答案 迭代器允许您将算法与容器分开。只要您有开始和结束迭代器,并且知道迭代器的功能(随机访问等),您就可以在迭代器指定的范围内进行操作。例
NSData *responseData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&respons
我正在编写代码,使用通用的 linux i2c 驱动程序 linux/i2c-dev.h 实现一个简单的 i2c 读/写功能 我对 ioctl 感到困惑:I2C_SLAVE 内核文档说明如下: You
在尝试克隆可变集合时,我最初的方法是对 mutable.Cloneable 特征使用 clone() 方法。但是,这取决于创建引用副本的 java.Object.clone 实现,而不是深拷贝。通过测
我是一名优秀的程序员,十分优秀!