было интересно, что происходит, когда я набираю такие вещи, как rails g draft: resource ... в терминал
Вызов rails
вызывает интерфейс командной строки (CLI), предоставляемый пакет программного обеспечения с открытым исходным кодом rails
, который вы установили из https://guides.rubygems.org/, вероятно, с помощью инструмента командной строки под названием gem
(т. е. gem install rails
).
g
, который является псевдоним слова generate
является подкомандой этого CLI, которая генерирует некоторый код на основе следующих параметров (draft:resource
, et c.). Это просто другая часть программного пакета rails
. Вы можете проверить исходный код здесь: https://github.com/rails/rails/blob/master/railties/lib/rails/commands.rb#L6.
почему я тоже могу сделать ruby -версию?
В какой-то момент был установлен 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, вы получите результаты, аналогичные приведенным выше.
Что изменилось на моем компьютере после установки Ruby и Rails, например что мой терминал теперь понимает эти команды?
Это объясняется в документации по rbenv, здесь: https://github.com/rbenv/rbenv#how -it-works . Сводка: На высоком уровне rbenv перехватывает команды Ruby с использованием исполняемых файлов shim, введенных в вашу переменную PATH, определяет, какая версия Ruby была указана вашим приложением, и передает ваши команды для правильной установки Ruby.