Начну с того, что я PHP-программист с хорошим опытом.
Было написано много интересного, были крупные проекты и услуги в сфере телекоммуникаций, охватывающие почти всю Европу.
Разработка и поддержка проектов происходила не месяц и не два, а полтора года.
Перейдя на руководящую должность и оставив необходимость постоянно программировать, появилась возможность уделять больше времени изучению и сравнению новых языков и технологий.
В общем, это часть моей работы :) Взгляд упал на Ruby on Rails. Знаменитый был прочитан Гибкая веб-разработка с помощью Rails: второе издание и был написан небольшой проект. Здесь я попытаюсь перечислить особенности этого замечательного фреймворка, которые бросились мне в глаза.
Если вы не планируете писать на Rails, то, думаю, вам все равно будет интересно познакомиться с некоторыми вкусностями, которые можно легко портировать на другие языки (для PHP уже сделано немало, в том числе и мной).
Платформа приложения (дело вкуса) Да Да.
Хотя многие будут кричать, что это ограничение их свободы, мой опыт показывает, что многих программистов просто необходимо ограничивать.
Структура рельсов очень логична.
Каждый компонент имеет свое место.
Очень четкое разделение компонентов MVC. Конфигурация приложения (комфортный) Соблюдая основные правила именования компонентов приложения, вы избежите утомительной настройки.
Первоначальное разделение на среды выполнения: разработку, тестирование и производство также является хорошим тоном в программировании.
Контроль версий базы данных (необходим для больших проектов) Миграция базы данных.
Все изменения, которые вы вносите в базу данных: создание таблиц, добавление индексов и т. д. — помещаются в код приложения и сохраняются в вашей системе контроля версий (я использую SVN).
Каждая миграция выглядит примерно так класс AddEmailColumnToOrders < ActiveRecord::Migration защита self.up add_column :orders, :e_mail, :string конец защита себя.
вниз Remove_column :orders, :e_mail конец конец Успешная активная запись (мощная библиотека) Простота создания моделей для работы с объектами базы данных поражает. Класс Орден < ActiveRecord::Base конец Этого достаточно для работы с таблицей заказов.
Нет очевидного отображения.
Связи между сущностями реализованы очень удобно и гибко.
Тестирование (необходим для больших проектов) Здесь только эмоции.
Существует три типа тестов: 1. юнит-тесты моделей - а-ля JUnit, PHPUnit (это знакомо), 2. функциональные тесты – те же юнит-тесты, но для контроллеров, 3. интеграционные (?) тесты целых сценариев веб-приложений; код будет говорить сам за себя защита test_buying_a_product Дэйв = обычный_пользователь dave.get "/store/index" dave.is_viewing "индекс" dave.buys_a @ruby_book dave.has_a_cart_tainment @ruby_book dave.checks_out DAVES_DETAILS dave.is_viewing "индекс" check_for_order DAVES_DETAILS, @ruby_book конец Это тестирование приложений на самом высоком уровне.
Кэширование (необходим для больших проектов) Мне здесь понравились 2 вещи.
Во-первых, это кэширование страниц.
Предположим, что URL-адрес /products/details/1 отображает описание продуктов.
Rails может создать файл /products/detail/1.html в общедоступном каталоге, который будет обслуживаться веб-сервером как статический контент. Понятно, что это окажет большое влияние на производительность.
Второе — это наблюдатели моделей, с помощью которых вы определяете, когда следует очистить кеш.
Например, класс СтатьяПодметальная машина < ActionController::Caching::Sweeper соблюдать статью # Если мы создаем новую статью, публичный список статей должен быть перегенерирован защита after_create (статья) expire_public_page конец # Если мы обновим существующую статью, кэшированная версия этой статьи устареет. защита after_update (статья) expire_article_page(article.id) конец # Удаление страницы означает, что мы обновляем общедоступный список и удаляем кэшированную статью.
защита after_destroy (статья) expire_public_page expire_article_page(article.id) конец конец JavaScript (комфортный) 1. хорошая интеграция с прототипом, 2. широкий выбор помощников для разработки компонентов приложения Ajax, 3. Генерация Javascript с использованием шаблонов RJS (это тип представления из MVC); выглядит примерно так page.replace_html("корзина", :partial => "корзина", :object => тележка ) page[:current_item].
visual_effect :highlight, :startcolor => "#88ff88", :endcolor => "#114411" 3. если ваше приложение богато Javascript, а у клиента он отключен (еще есть умные люди), то довольно легко все-таки разрешить им работать с вашим сайтом.
Читабельные URL-адреса (комфортный) Реализация распознавания и генерации дружественных URL-адресов проста и логична.
map.connect 'store/checkout', :conditions => { :method => :get }, :controller => "store", :action => "display_checkout_form" map.connect 'store/checkout', :conditions => { :method => :post }, :controller => "store", :action => "save_checkout_form" Дополнительный Отладка и многое другое (комфортный) Встроенный профилировщик и сценарии тестирования.
Метод точки останова, вызываемый в действии контроллера, прерывает выполнение скрипта страницы, позволяет выполнить любые действия с приложением через консоль, а затем продолжить выполнение скрипта.
Это то немногое, что я могу вспомнить в 11 вечера.
Запрещается начинать холивары.
Я просто перечислил то, что хотелось бы видеть во всех проектах.
Теги: #ruby на рельсах #ruby #ruby #rails #ruby
-
Как Работает Программа Disk Speedup
19 Oct, 24 -
Хороший Реестр — Окажет Мне Большую Услугу
19 Oct, 24 -
Обновление Интерфейса Google
19 Oct, 24 -
Университет Хабра
19 Oct, 24 -
Здоровье Джобса И Цитаты Apple
19 Oct, 24