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

Рамочная программа для не-веб-Ruby

Я ищу простую структуру Ruby для проекта не веб-сайта. Я очень хорошо знаком с Rails, поэтому, когда я пишу чистый Ruby, я скучаю:

  • Различные среды (development, test, production)
  • Консоль rails c
  • И многие другие утилиты, предоставляемые rake или rails

Я знаю, что мне может потребоваться ActiveSupport и друзья, но это не то, что мне нужно. Это в основном рамки разработки, которые я пропускаю.

Одна вещь, которую я исследовал, - это сделать мой проект как драгоценный камень (даже если мне не нужен драгоценный камень в конце). Например, использование ювелира обеспечивает управление версиями. Я уверен, что есть лучшие способы, но я не могу их найти. Что бы вы использовали?

4b9b3361

Ответ 1

Хорошо, это вопрос, состоящий из трех частей. Трое или триесты... на самом деле это не работает. Threstion это тогда.

Одна вещь, чтобы понять Rails, заключается в том, что она не волшебна. Это код, написанный смертными людьми, у которых есть недостатки (например, негабаритные эго), но которые также невероятно умны. Поэтому мы можем понять это, возможно, немного изучив их работу.

1. Среда Rails прекрасна.

Код управления средой Rails на самом деле довольно прост. У вас есть среда по умолчанию, которая установлена ​​на development на эту строку в railties/lib/rails/commands/server.rb. Вы можете сделать то же самое в своем приложении. Запустите немного кода инициализации, который определяет YourAwesomeThing.environment = ENV["AWESOME_ENV"] || "development". Тогда это вопрос, требующий config/environments/#{YourAwesomeThing.environment}.rb, где он вам нужен. Тогда это вопрос конфигурации в тех файлах, которые изменяют работу вашей библиотеки в зависимости от среды.

Я не мог найти строку, которая делает это в 3-1-stable (она ушла), поэтому здесь, который я думаю, делает это в 3-0-stable.

Что касается прекрасных методов, таких как Rails.env.production?, они предоставляются классом ActiveSupport::StringInquirer.

2. Консоль Rails - это второе пришествие

Я думаю, что rails console потрясающий. Я не хочу создавать новый файл, чтобы вручную протестировать некоторый код, как я бы сделал в Black Days PHP. Я могу прыгнуть в консоль и попробовать ее там, а затем набрать exit, когда закончите. Удивительно. Я думаю, что разработчики Rails не очень ценят консоль.

Во всяком случае, это всего лишь сеанс irb, в котором перед ним загружена среда Rails! Я повторю его снова: Rails не волшебный. Если вы набрали irb, а затем внутри этого сеанса irb, набрав require 'config/environment', вы получите (по крайней мере, насколько мне известно...) то же самое, что и в консоли Rails!

Это связано с магией, которая продолжается в части инициализации Rails, которая почти волшебна, но нет, и я объяснил ее в Руководство по инициализации Который будет закончен и обновлен для Rails 3.1 В реальности я обещаю пересечь мое сердце и надеюсь умереть, если бы у меня было время!

Вероятно, вы могли бы много узнать, прочитав этот текст, похожий на книгу, написанную Джорджем Р. Мартином или Робертом Джорданом. Я определенно многому научился писать!

3. Другие

Вот где я колеблюсь. Какие еще утилит вам нужны от Rake/Rails? Все это там, вам просто нужно выбрать нужные вам части, что на самом деле довольно просто... но я не могу сказать вам, как это сделать, если вы не начнете рисовать эти цели.


В любом случае, это вопрос, который волнует меня ответить. Спасибо, что предоставили мне эту музыку:)

Edit

Я только что заметил четвертый вопрос BONUS в конце вашего вопроса. Какой смысл в версии вашего проекта? Почему бы не использовать систему управления версиями, такую ​​как Git, чтобы сделать это, и просто git tag версии по своему усмотрению? Я думаю, что это имело бы наибольший смысл.

Ответ 2

Прежде всего, цель Rails как веб-структуры - позволить вам в основном забывать о низкоуровневых деталях веб-приложения (взаимодействуя с веб-сервером, базой данных и т.д.) и предоставляя вам высокоуровневые абстракции, которые позволяют сосредоточиться на фактической работе: получение вашего приложения.

Существует такое огромное разнообразие не-веб-приложений, что просто невозможно иметь структуру, которая "делает их всех".

Полезно понять, что такое основа, и почему и когда вы должны ее использовать.

Скажем, вам придется строить дом для собак. Вы купили бы дерево, гвозди и молоток, чтобы построить его так, как хотите, с нуля, или вы можете пойти в Walmart и купить комплект для собачьих уборов. Вы получите руководство с подробными инструкциями о том, как построить собачий "дом для сновидений", и вы получите его быстрее, чем при создании с нуля, но вы будете ограничены древесиной, которая поставляется с ней, и может быть принуждена используйте их гвозди или винты, а в некоторых случаях вам также нужно будет купить специальный отверток.

Набор DIY - это ваша структура. Некоторые умные парни уже предоставили вам основные инструменты для создания вашего дома, вам нужно было только выяснить (или нет, если бы у вас было руководство), как это сделать, учитывая их "рамки".

Теперь скажем, вы построили небоскреб. Используемые материалы, инструменты и условные обозначения (рамки), вероятно, не были бы такими же, как при строительстве собачьего дома, и было бы слишком сложно использовать "инфраструктуру небоскреба" для строительства собачьего дома.

Вы не будете писать Twitter-клиент с тем же набором инструментов и соглашений, что и при написании банковского приложения с миллиардом одновременно работающих пользователей.

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

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

Купите себе несколько книг о Design Patterns и прочитайте отличное программное обеспечение, и тогда вы поймете, почему авторы не выбрали рамки приложения. Действительно, они разработали свои собственные соглашения и определили поведение того, что он должен делать; и еще раз, "Rails way" - это не единственный способ, который не делает его плохим.:)

Я был бы признателен за конструктивную критику, поскольку я действительно пытался дать хороший ответ.

Ответ 3

Вы посмотрели Monkeybars? Это Rails-вдохновленная MVC-инфраструктура, которая работает над JRuby и Swing для создания настольных приложений. Мне это очень нравится.