Padrino - це
Я вже писав декілька статей про Sinatra, думаю їх буде корисно почитати.
Отже, зустрічайте – Padrino!
Ось перелік основних можливостей Padrino:
- Агностичність. Ви самі вибираєте бібліотеку ORM(ActiveRecord, DataMapper або Sequel), фреймворк тестів(shoulda, rspec), мову шаблонів(HAML, Erb), бібліотеку JavaScript(JQuery, Prototype).
- Генератори. Створення додатку, моделей, контролерів. За допомогою команди padrino-gen project.
- Монтування. Головним чином призначене для простої установки декількох додатків в рамках одного проекту, на відміну від інших Ruby-фреймворків.
- Маршрутизація. Іменовані URL-маршрути, іменовані параметри, підтримка respont_to, підтримка фільтрів before/after.
- Помічники (helpers)
- Помічники тегів: tag, content_tag, input_tag.
- Помічники тверджень: link_to, image_tag, javascript_include_tag.
- Помічники форм: form_tag, form_for, field_set_tag, text_field.
- Текстові помічники. Корисні для форматування: relative_time_ago, js_escape_html, sanitize_html
- Підтримка створення, отримання і доставки електронної пошти (аналог ActionMailer з Rails).
- Інтерфейс адміністратора (як в Django).
- Протоколювання. Забезпечення єдиного реєстратора, який може взаємодіяти з ORM або будь-якою іншою бібліотекою.
- Перезавантаження. Автоматичне перезавантаження сервера коду в процесі розробки.
- Інтернаціоналізація. Повна підтримка I18n.
Почнемо наше знайомство зі встановлення Padrino:
$ sudo gem1.9.1 install padrino
Під час написання цієї статті я використовував Ubuntu Linux і Ruby версії 1.9.1 зібрану із вихідних кодів. Всі приклади я буду приводити для терміналу.
Тепер все готово, щоб розпочати новий проект. Як і в Rails, проект на Padrino починається зі створення скелета.
Для цього прикладу ми будемо використовувати ORM DataMapper, мову розмітки HAML, фреймворк для тестування Shoulda і бібліотеку JavaScript фреймворк jQuery.
$ /opt/ruby191/bin/padrino-gen project sample_blog -t shoulda -e haml -c sass -s jquery -d datamapper -b
Для того щоб переглянути доступні опції, виконайте в терміналі:
$ /opt/ruby191/bin/padrino-gen project -h
Доступні компоненти та їх значення по замовчуванню наведені нижче:
Компонент | Опція командного рядка | По замовчуванню | Доступні значення |
---|---|---|---|
Система веб-шаблонів | -e | haml | erb, haml |
Інструмент тестування | -t | rspec | bacon, shoulda, cucumber, testspec, riot, rspec |
ORM | -d | - | mongomapper, mongoid, activerecord, datamapper, sequel, couchrest |
Cтилі CSS (stylesheet) | -c | - | less, sass |
JavaScript фреймворк | -s | - | prototype, rightjs, jquery, mootools |
Mock-об’єкт | -m | - | rr, mocha |
Ця команда створить наш основний проект на Padrino, і надрукує звіт про згенеровані файли. Прапорець -b вказує автоматично встановити всі залежності.
Розглянемо файлову структуру нашого проекту.
- app/ - тут буде міститись основний код: моделі, шаблони, контролери і помічники
- config/ - налаштування додатку: параметри з'єднання з БД і підключені додатки до проекту
- lib/ - тут можна розмістити код сторонніх бібліотек
- public/ - кореневий каталог веб-сервера, тут лежить статичний контент
- test/ - тести
- tmp/ - тут по замовчуванню зберігаються сесії користувача і pid-файли
Слідуємо інструкції, яку надав генератор. Переходимо у каталог з новоствореним проектом
$ cd sample_blog
і виконуємо наступну команду:$ /opt/ruby191/bin/bundle install
Ця команда встановить відсутні бібліотеки.Bundler - це менеджер для управління залежностями gem'ів в Ruby-додатках. Ця утиліта дозволяє легко встановлювати необхідні gem'и для вашої програми, при цьому зовсім не залежати від встановлених в системі.
Тепер подивимось на файл config/database.rb, щоб переконатися, що підключення до бази даних є коректними. Оскільки в цій статті ми будемо використовувати SQLite3, залишимо налаштування по замовчуванню. Якщо на попередньому кроці у вас виникли проблеми з bundle install, можливо в вашій системі не встановлений пакет для розробки sqlite3, який є необхідним для компіляції do_sqlite3.
$ sudo apt-get install libsqlite3-dev
Встановимо кілька простих маршрутів у наш додаток, щоб продемонструвати систему маршрутизації Padrino. Відкриваємош app/app.rb і додаємо наступні маршрути:
# app/app.rb
class SampleBlog < Padrino::Application
configure do
# ...
end
get "/" do
"Hello World!"
end
get :about, :map => '/about_us' do
render :haml "%p This is a sample blog created to demonstrate the power of Padrino!"
end
end
Самий час запустити веб-сервер і переконатися, що додаток працює.
$ /opt/ruby191/bin/padrino start
=> Located unlocked Gemfile for development
=> Padrino/0.9.10 has taken the stage development on port 3000
>> Thin web server (v1.2.7 codename No Hup)
>> Maximum connections set to 1024
>> Listening on localhost:3000, CTRL+C to stop
http://localhost:3000
Відкриваємо це посилання у своєму улюбленому браузері і спостерігаємо сторінку "Hello World!" — значить все гаразд і прийшов час писати додаток.
Панель керування адміністратора
Далі, гарний час для встановлення інтерфейсу адміністратора Padrino, який дозволяє легко переглядати, шукати, змінювати дані для проекту. Вводимо в терміналі:$ /opt/ruby191/bin/padrino-gen admin
Це створить додаток адміністратора в рамках нашого проекту і встановить його в config/app.rb.
Далі, дотримуючить інструкції, створюємо базу даних, виконуємо міграції і запускаємо завдання, які було сформовано у файлі db/seeds.rb. Переходимо в термінал і виконуєм наступну команду:
& /opt/ruby191/bin/padrino rake dm:migrate seed
В ході цього процесу вам буде запропоновано ввести адресу електронної пошти та пароль для доступу до інтерфейсу адміністратора.
Перезапускаємо веб-сервер і за адресою http://localhost:3000/admin спостерігаємо панель адміністратора.
Створення повідомлень
Тепер коли додаток готовий, давайте створимо функціональність для перегляду повідомлень нашого блогу і додамо можливість створювати нові повідомлення.Ми це зробимо шляхом створення моделі.
$ /opt/ruby191/bin/padrino-gen model post title:string body:text
=> Located unlocked Gemfile for development
apply orms/datamapper
apply tests/shoulda
create app/models/post.rb
create test/models/post_test.rb
create db/migrate/002_create_posts.rb
Йдемо далі і виконуємо міграцію.
$ /opt/ruby191/bin/padrino rake dm:migrate
Далі давайте створимо контролер, щоб дозволити основну функціональність для представлень.
$ /opt/ruby191/bin/padrino-gen controller posts get:index get:show
=> Located unlocked Gemfile for development
create app/controllers/posts.rb
create app/helpers/posts_helper.rb
create app/views/posts
apply tests/shoulda
create test/controllers/posts_controller_test.rb
Прикріпимо деякі стандартні маршрути(:index та :show) до контролера. Якщо ви знайомі з Rails, для вас це буде схожим.
# app/controllers/posts.rb
SampleBlog.controllers :posts do
get :index do
@posts = Post.all
render 'posts/index'
end
get :show do
@post = Post.first(params[:id])
render 'posts/show'
end
end
Представлення
Далі створимо представлення для контролера.# app/views/posts/index.haml
- @title = "Ласкаво просимо"
#posts= partial 'posts/post', :collection => @posts
# app/views/posts/_post.haml
.post
.title= link_to post.title, url_for(:posts, :show, :id => post.id)
.body= simple_format(post.body)
# app/views/posts/show.haml
- @title = @post.title
#show
.post
.title= @post.title
.body= simple_format(@post.body)
%p= link_to 'Дивитись всі записи', url_for(:posts, :index)
Інтерфейс адміністратора Pardino дозволяє легко створювати, редагувати і видаляти записи автоматично. Щоб керувати записами з його допомогою необхідно виконати наступну команду:
$ /opt/ruby191/bin/padrino-gen admin_page post
=> Located unlocked Gemfile for development
create admin/controllers/posts.rb
create admin/views/posts/_form.haml
create admin/views/posts/edit.haml
create admin/views/posts/index.haml
create admin/views/posts/new.haml
inject admin/app.rb
Перезапускаємо сервер і дивимося на те, що у нас вийшло.
Відкриваємо у переглядачі http://localhost:3000/admin і входимо використовуючи облікові дані які ми вводили під час встановлення.
Там тепер повинні бути дві вкладки, одна для повідомлень(Posts), а інша для облікових записів(Accounts). Створюємо кілька нових повідомлень.
Головна сторінка нашого блогу матиме наступний вигляд.
Посилання
Продовження...
Немає коментарів:
Дописати коментар