我只使用rake命令学习Rails,比如rake db:migrate;然而,我读到我应该使用bundle exec rake ...而不是普通的rake.现在我不知道该用哪个.

我应该使用bundle exec rake而不是普通的rake,还是只是一种偏好?如有任何见解,将不胜感激!谢谢

推荐答案

bundle exec在包的上下文中执行命令.

这意味着它使用了GEM文件中指定的GEM.大多数情况下,运行bundle exec rake foo的结果与运行rake foo的结果相同,尤其是如果您在系统范围内安装了与GEM文件中相同的gems.然而,一些应用程序可能会指定不同于您在系统范围内安装的gems版本,并且可能希望这些gems和版本能够正确运行.如果你只是在没有bundle exec的情况下 run ,你可能会出现一些奇怪的错误.

使用bundle exec可以保证程序在gemfile中指定的环境下运行,这意味着程序的创建者希望它在这个环境中运行,这意味着无论你的计算机上有什么奇怪的设置,它都应该正确运行.

它基本上规范了程序运行的环境.这有助于避免版本地狱,让生活更轻松.

更多信息请参见http://bundler.io/v1.3/man/bundle-exec.1.html.

Ruby-on-rails相关问答推荐

如何在_serialize之前执行代码?""或者如何在序列化属性之前对属性进行清理?

对Rails进行枚举不允许空值

params.permit ruby​​3.2.1 更新后 Active::Record 的未定义方法=~

ArgumentError 用于 Ruby on Rails 中非常简单的初始化方法,没有参数

在 Rails 7 中,可以将导入映射与 js Bundle 解决方案一起使用,还是它们是专有的?

无法在生产服务器上启动 Rails 4 控制台

如何判断是否已经在 ruby​​ on rails 的数据库事务中?

跳过模型中的某些验证方法

判断 DateTime 值是今天、明天还是以后

如何将 yaml 文件解析为 ruby​​ 哈希和/或数组?

在 Rails 中将 DateTime 字符串转换为 UTC

删除链接在 Rails 3 视图中发送Get而不是Delete

如何在 RSpec 中包含 Rails 助手

Rails:带参数的 URL/路径

Rails:如何修复‘生产’环境缺少 secret_key_base

非持久 ActiveRecord 模型属性

Rails 3:乘客找不到Bundle 程序安装的 git gem

Rails:弃用警告:您没有设置 config.secret_key_base

Rails:在 link_to 中保留 GET 查询字符串参数

Rails:为什么 with_exclusive_scope 受保护?关于如何使用它的任何好的做法?