Статьи

Rails Intro, Deep Dive: генерация приложений

Команда rails new вероятно, является первой частью командной строки Rails, которую мы все изучили. Дайте ему имя приложения, и эта команда создаст полнофункциональное (sic) веб-приложение Rails. Большая часть соглашения о конфигурации действует в сгенерированной структуре, где каталог приложения содержит нашу модель, представление, контроллер и (теперь на Rails 3.1) клиентские ресурсы.

Мой дополнительный акцент на «полностью функциональный» в предыдущем заявлении существует, чтобы указать, что сайт вряд ли готов к производству. Чаще всего возникают проблемы с базой данных, безопасностью или другими проблемами, но созданное приложение является отличной основой. Итак, как мы можем изменить этот фундамент, чтобы продвинуть нас дальше по более конкретным путям развития?

Опции, доступные для rails new , показаны на скриншоте ниже.

Варианты рельсов новые

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

Рубиновый путь ( -r, --ruby )

Путь к двоичному файлу Ruby, который будет использоваться для этого приложения Rails. Вы можете использовать это, чтобы протестировать ваше приложение с другой версией Ruby или заблокировать его в определенной версии. Что касается разработки, это не нужно из-за таких инструментов, как RVM , но ваша производственная или промежуточная среда может иметь несколько версий Ruby.

-b, --builder приложений ( -b, --builder )

В последнем посте я кратко упомянул возможность указать конструктор приложений. Конструктор отвечает за создание структуры приложения, поэтому предоставление собственного компоновщика позволяет вам изменять эту структуру и контент по своему усмотрению. Короче говоря, вы создаете класс, который наследует от Rails::AppBuilder и переопределяет то, что вы хотите изменить. Вы можете указать другую тестовую среду (скажем, RSpec) или автоматически включить ваши любимые гемы или рейк-задачи … ну, вы поняли. Вот лучший пост, который я смог найти о процессе (спасибо, Майк Баринек!)

Шаблон приложения ( -m, --template )

Шаблоны приложений — это еще один способ изменить способ создания приложения. В этом случае передаваемый параметру -m представляет собой файл Ruby, который позволяет добавлять гемы или инициализаторы в сгенерированное приложение Rails. Основное различие между использованием компоновщика и использованием шаблона заключается в том, когда происходят настройки. Используя конструктор, вы можете изменить структуру приложения по мере его создания (например, я мог бы назвать каталог lib «bibloteca»), что вы не можете (читай: не должны) делать с шаблоном.

Шаблоны приложений — это больше о выборе правильных гемов, выполнении граблей и добавлении инициализаторов в базовую структуру приложения. Шаблоны, похоже, являются гораздо более популярным методом настройки генерации приложений на Rails, и даже есть RailsWizard, позволяющий легко создавать шаблоны. Кроме того, я чувствую, что любое упоминание о шаблонах приложений Rails является неполным, не освещая удивительную работу Даниэля Кехо и его хранилища RailsApp .

Вещи, которые вы можете пропустить

Многие из опций команды rails new позволяют вам НЕ делать что-либо.

  • ( --skip-gemfile ): Не создавайте Gemfile, потому что я привожу свой собственный или я не использую Bundler.
  • ( --skip-bundle ): не запускать --skip-bundle bundle install после генерации приложения, потому что я хочу сделать что-то, прежде чем Bundler сделает свое дело.
  • ( -G, --skip-active-record ): не включать ActiveRecord, потому что я использую другую базу данных ORM или NoSQL.
  • ( -J, --skip-javascript ): не -J, --skip-javascript по умолчанию, потому что я привожу свои.
  • ( -T, --skip-test-unit ): не создавайте файлы Test :: Unit test по умолчанию (кстати, это даже не создает каталог test ), потому что я использую другую среду тестирования (например, RSpec ).
  • ( -F, --skip-git ): Не создавайте Git-файлы (.gitgnore и .gitkeep), потому что я использую другую систему контроля версий или (NOOOO!) Вообще. Интересно отметить, что в официальных руководствах --git опция --git . Из того, что я могу сказать, эта опция недопустима (и игнорируется командой), но должна быть похмелью, когда файлы Git не были созданы по умолчанию.

Укажите базу данных ( -d, --database)

По умолчанию Rails предполагает, что новое приложение будет использовать базу данных, и эта база данных будет SQLite. Это позволяет легко просматривать приложения Rails без дополнительных затрат на типичную СУБД. Однако в тех случаях, когда вы хотите использовать другую СУБД, вы можете указать одну из них, используя эту опцию и указав один из поддерживаемых параметров. Эти поддерживаемые параметры: mysql/oracle/postgresql/sqlite3/frontbase/ibm_db/jdbcmysql/jdbcsqlite3/jdbcpostgresql . Укажите один из них, и ваш Gemfile и config / database.yml будут сгенерированы соответствующим образом.

Укажите местоположение Rails

Есть две опции ( --dev and --edge ), которые позволяют вам указывать на конкретную версию Rails. Использование --dev которое позволяет вам указывать на локальный Git-репозиторий Rails. В этом случае версия Rails из вашего локального репозитория либо должна быть в PATH, либо указывать полный путь при создании приложения. Например:

 ruby /path/to/rails/bin/rails new theapp --dev # from rubyonrails.org 

Опция --edge будет указывать на версию HEAD основного репозитория Rails Github. В любом случае вы хотите заморозить вашу версию Rails.

Укажите библиотеку JavaScript ( -j, --javascript=JAVASCRIPT)

Если вы не хотите использовать другую опцию помимо jQuery, вы можете указать ‘prototype’ для опции -j и получить приложение с библиотекой Prototype.

Варианты исполнения

Различные параметры времени выполнения влияют на обратную связь команды, а также на способ обработки существующих файлов. Параметры -f и --force будут перезаписывать любые существующие файлы. Возможно, вы захотите сделать это, если вы испортили некоторые из базовых файлов и (к стыду!) Не используете систему контроля версий. Параметры -s и --skip противоположны силе и не будут перезаписывать существующие файлы. Возможно, мой любимый ключ командной строки — -p, --pretend , который на самом деле ничего не создает, но все равно выдает выходные данные команды, чтобы вы могли видеть, что она будет делать. И, наконец, -q, --quiet подавляет весь вывод. Мне нравится запускать rails new existential_app -p -q и спрашивать вслух, существует ли он на самом деле…

Чтобы закончить, давайте создадим приложение, которое будет использоваться оставшимися статьями этой серии. К сожалению, мы просто будем использовать все значения по умолчанию.

 rails new deep_dive 

Вывод этой команды здесь

Прежде чем идти, давайте удостоверимся, что мы в порядке Перейдите в каталог deep_dive и введите rails s . Вы должны увидеть результат как:

Rails Server Output

Теперь, если вы откроете http: // localhost: 3000, вы увидите знакомую страницу «Ruby on Rails: Welcome Aboard», которую мы удалим с предубеждением в следующем посте и начнем действительно создавать наше приложение.