当我们从终端输入“ rails”或“ ruby ”时会发生什么?

问题描述 投票:0回答:1

完整的初学者问题,但是我想知道当在终端中输入rails g draft:resource ...之类的东西时会发生什么。我知道最终结果,但是我不明白为什么会这样。

换句话说,我到底在做什么?我在调用Rails程序吗? (如果是这样,该程序在哪里,为什么我可以在没有CD的任何地方调用它?)

[同样,为什么我也可以做ruby -version?安装Ruby和Rails之后,我的计算机发生了什么变化,以使我的终端现在可以理解这些命令了?究竟执行了什么?

谢谢!

ruby-on-rails ruby command-line-interface
1个回答
2
投票

想知道当我在终端中输入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 -vwhich,然后从那里进行更深入的了解,可以了解命令正在调用的程序。

$ 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安装。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.