Подтвердить что ты не робот

Что внутри моего рельса./bin?

Ruby on Rails 4 представил * каталог ./bin. Внутри ./bin есть несколько исполняемых файлов: bundle, rails, rake, setup, spring.

Мои вопросы:

  • Что делают эти исполняемые файлы? Почему они существуют?
  • Когда они вызываются?
  • Могу ли я их редактировать? Почему я должен их редактировать?

Я прочитал источник этих файлов, и я попытался использовать их в Google, но я не могу обернуть его вокруг. Я ищу подробное объяснение.

* Я считаю, что многие из этих файлов существовали до Rails 4, только в другом месте.

4b9b3361

Ответ 1

Представленный в Rails 4 каталог ./bin содержит ваше приложение "binstubs". Binstubs - это обертки вокруг исполняемых файлов gem, например rails или bundle, что гарантирует, что исполняемый файл gem запускается внутри правильной среды для вашего приложения Rails.

Binstubs можно использовать вместо bundle exec для запуска исполняемого исполняемого файла в среде вашего приложения. Например, вместо ввода bundle exec rails scaffold products вы можете ввести bin/rails scaffold products. Использование binstubs более гибко, чем bundle exec, потому что вам не нужно cd в корневой каталог приложения и введите bundle exec перед тем, как все.

По умолчанию для новых проектов рельсов автоматически создаются bundle, rails, rake, setup, spring binstubs. Чтобы создать binstub для исполняемого файла, просто введите bundle binstubs name_of_gem_executable. Вы найдете новый binstub в своем каталоге ./bin.

Некоторые предлагают помещать ./bin в поиск оболочки $PATH, так что вам не нужно вводить bin/rails, и вы можете просто ввести rails. Это рискованно, потому что он зависит от ./bin, предшествующего исполняемому пути жемчужины в $PATH; если вы случайно забыли это упорядочение и настроите $PATH так, чтобы исполняемый файл gem был найден до оболочки binstub, вы могли бы легко вызвать исполняемый файл gem - без экологического предлога - без его реализации.

Ответ 2

Бит (короткий для двоичного) - это не что иное, как приложение. Как вы заметили, эти файлы являются рубиновыми, но они не имеют расширения .rb и могут быть запущены из вашей оболочки так же, как любая команда оболочки, без необходимости запуска любого ruby-интерпретатора.

Итак, что делают программы тезисов? Я почти уверен, что вы уже знаете, что делают рейки.

О spring, это драгоценный камень, который поддерживает ваше приложение в фоновом режиме (отсюда его нужно запускать независимо от приложения). Дополнительная информация на их github.

Я не вижу причин редактировать эти файлы, но, как говорится, они рубиновые файлы, поэтому вы можете делать с ними все, что хотите. Один пример того, почему вы хотите редактировать, можно найти здесь.

Я лично вкладываю некоторые вещи в папку bin. Скрипты для подключения к удаленным серверам или рубиновые скрипты, которые мне нужны, но которые я не хочу запускать как rake-задачи, поскольку они более общие, чем мое приложение.