完整的初学者问题,但是我想知道当在终端中输入rails g draft:resource ...
之类的东西时会发生什么。我知道最终结果,但是我不明白为什么会这样。
换句话说,我到底在做什么?我在调用Rails程序吗? (如果是这样,该程序在哪里,为什么我可以在没有CD的任何地方调用它?)
[同样,为什么我也可以做ruby -version
?安装Ruby和Rails之后,我的计算机发生了什么变化,以使我的终端现在可以理解这些命令了?究竟执行了什么?
谢谢!
想知道当我在终端中输入rails g draft:resource ...之类的东西时会发生什么
[调用rails
正在调用由您从rails
安装的开源软件包https://guides.rubygems.org/公开的命令行界面(CLI),可能是通过名为gem
的命令行工具(即gem install rails
)。] >
g
是单词generate
的别名,是此CLI的子命令,它基于以下参数(draft:resource
等)生成一些代码。它只是rails
软件包的另一部分。您可以在此处签出源代码:https://github.com/rails/rails/blob/master/railties/lib/rails/commands.rb#L6。
为什么我也可以做ruby -version?
有时安装了
ruby
(通常是rvm或rbenv安装的)。在终端上,通过在命令前键入command -v
或which
,然后从那里进行更深入的了解,可以了解命令正在调用的程序。$ which ruby /Users/avinashmoondra/.rbenv/shims/ruby $ which rails /Users/avinashmoondra/.rbenv/shims/rails
例如这些是等效的:
$ /Users/avinashmoondra/.rbenv/shims/ruby -v
ruby 2.6.4p104 (2019-08-28 revision 67798) [x86_64-darwin18]
$ ruby -v
ruby 2.6.4p104 (2019-08-28 revision 67798) [x86_64-darwin18]
Ruby(和SQLite3)是安装Rails所必需的,请参阅:https://guides.rubyonrails.org/getting_started.html#installing-rails。如果您使用的是rbenv(红宝石版本管理器),则会得到与上述类似的结果。
安装Ruby和Rails之后,我的计算机发生了什么变化,以使我的终端现在可以理解这些命令?
在rbenv文档中进行了解释,在这里:https://github.com/rbenv/rbenv#how-it-works。简介:在较高的层次上,rbenv使用注入到PATH中的填充可执行文件来拦截Ruby命令,确定您的应用程序已指定哪个Ruby版本,并将您的命令传递给正确的Ruby安装。