我试图掌握一些任务背后的逻辑是“rails”,而其他的,大多数,被发现是 rake 任务。为什么rails server
而不是rake server
例如?
我可以理解,在 rake 中无法进行引导:毕竟,在开始使用 rake 之前,您首先需要一个rakefile和其他要求。因此,使用二进制文件创建项目rails
似乎只是实用的。
但是为什么generate
, server
,console
却不是migrate
or assets
?我看不出逻辑。有没有?
我试图掌握一些任务背后的逻辑是“rails”,而其他的,大多数,被发现是 rake 任务。为什么rails server
而不是rake server
例如?
我可以理解,在 rake 中无法进行引导:毕竟,在开始使用 rake 之前,您首先需要一个rakefile和其他要求。因此,使用二进制文件创建项目rails
似乎只是实用的。
但是为什么generate
, server
,console
却不是migrate
or assets
?我看不出逻辑。有没有?
IMOrails
脚本用于“实时”控制台使用,例如在开发期间。
这些rake
任务是更“自动化”的任务,例如,可能作为构建或部署周期的一部分运行,例如由 CI 服务器运行。一些 rake 任务可能会将 rails/etc 分组。命令一起(如测试)。
脚本是开发时一些常见任务的rake
实用程序/构建工具。例如,您需要进行部署、运行测试、数据库内容、截断日志文件、编译资产……您可以创建自己的自定义 rake 脚本。
rails
脚本是用于 gem 的位于 script 目录下的 ruby 文件rails
。这就是宝石的作用。Rails 是一个 ruby Web 框架,因此该命令rails
用于启动rails
应用程序,转到rails
控制台,generate
文件。它在您安装 gem 时捆绑在一起。
您可以将rails
命令bundle
视为捆绑程序的命令。bundle install
, bundle update
...都与解决gem依赖有关。rspec
运行测试的命令...
有些 gem 有一个可执行脚本,例如rails
, bundler
, capistrano
, whenever
, rspec
。其他一些宝石没有,例如builder
,will_paginate
....
您可以查看如何将可执行文件添加到 gem,http ://guides.rubygems.org/make-your-own-gem/#adding-an-executable