rails sbundle exec rails s之间有什么区别?人们似乎说bundle exec rails s更好,但为什么呢?同时this post表示rails s更好.

是哪一个?

推荐答案

有时候,当你安装一个gem时,它还附带了一个可执行文件/二进制文件.这些示例包括:railsrakerspecpry等.然而,当您安装了多个版本的gem时,您将有多个版本的这些可执行文件.因此,如果您想为给定的rails应用程序执行这些二进制文件中的一个,您可能需要消除您想要的可执行文件的歧义——rake v10的可执行文件.1或rake v10的版本.例如,2.因为这个问题的答案可以通过你的gem文件中gem的版本来发现.锁定文件(由bundler创建),bundler提供一个命令,用于根据当前项目的GEM文件中指定的版本执行二进制文件.锁这个命令是bundle exec <command>.

因此,对于大多数命令,您都需要运行bundle exec <command>,以确保为项目运行正确的版本(同时确保所有依赖项也从Gemfile.lock中指定的正确版本加载).这条规则的一个臭名昭著的例外是rails命令.原因是rails命令要做的第一件事是加载bundler并判断要执行的命令版本.因此,在运行rails命令时,首先要让bundler参与进来,这实际上是在放慢速度.

因此,简而言之,使用:

rails server
rails console
bundle exec <some command that isn't rails>

Ruby-on-rails相关问答推荐

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

在数组中定位不匹配的索引

Rails 7.1.3如何在生产环境中查看堆栈跟踪

如何从 gem 覆盖 JSONAPI.configure

升级到 Rails 6.1.6.1 导致 Psych::DisallowedClass: 试图加载未指定的类:符号

如何将 Ruby 哈希转换为 XML?

Rails 中页面视图的简单计数器

水豚 click_link 与 :href 匹配

Phusion 乘客(适合傻瓜!)

使用 jQuery 在 Rails 中不显眼的动态表单字段

我可以将默认值传递给 rails 生成迁移吗?

如何在 Rails ActiveRecord 中指定日期小于今天的条件

将图标添加到 Rails 应用程序

Django 还是 Ruby-On-Rails?

Rails Devise:设置密码重置令牌并重定向用户

在 rails 3 中批量插入

Rails:每个环境的初始化程序?

使用连接的 Ruby on Rails ActiveRecord 查询

ActiveRecord 何时会保存关联?

如何在 Rails 表单中将复选框和标签保持在同一行?