Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
GEMS / PLUGINS
  Интересно, полезно, весело
Что такое джемс?

RubyGems (rubygems.org) — пакетный
менеджер для руби

Единый формат распространения отдельных
программ и...
Преимущества джемс

require ‘rubygems’
require ‘gemname’

sudo gem update

Отсутствие централизации

Стандартный формат: 8...
Github


125000 пользователей

100000 проектов

gists

GitHub Pages
restful-authentication
                   (technoweenie)




./script/generate authenticated user sessions

map.signup ‘/s...
authlogic            (binarylogic)




class UserSession < Authlogic::Session::Base
  # specify configuration here, such a...
will_paginate                (mislav)




Post.paginate :page => 1,
              :order => 'created_at DESC'

@posts = Po...
paperclip            (thoughtbot)




class User < ActiveRecord::Base
  has_attached_file :avatar,
                    :st...
cucumber            (aslakhellesoy)




Feature: Addition
  In order to avoid silly mistakes
  As a math idiot
  I want to...
cucumber                   (cont’d)




Given /^I visit the calculator page$/ do
  visit '/add'
end

Given /^I fill in '(....
attachment_fu                (technoweenie)




has_attachment
  :size => 1.megabyte..2.megabytes
has_attachment
  :conten...
webrat         (brynary)




visit home_path
click_link "Sign up"
fill_in "Email", :with => "good@example.com"
select "Fre...
bort          (fudgestudios)




default css

rm rails.png/index.html

page title helper

application layout

filtering pas...
whenever            (javan)




wheneverize .

every 3.hours do
  runner "MyModel.some_process"
  rake "my:rake:task"
end
...
formtastic                               (justinfrench)



<% semantic_form_for @article do |form| %>
 <% form.inputs :nam...
delayed_job                                                    (tobi)




create_table :delayed_jobs, :force => true do |t...
haml               (Hampton Caitlin)



%ul
  %li Salt
  %li Pepper


%p
  Date/Time:
  - now = DateTime.now
  %strong= no...
searchlogic           (binarylogic)




User.username_equals("bjohnson")
User.username_does_not_equal("bjohnson")
User.use...
searchlogic                                                 (cont’d)




User.username_eq(10) # equals
User.id_lt(10)     ...
Автора ÿбер-джемсов
Technoweenie — Рик          Fudgestudios — Фил
Олсон, ENTP                 Джеффс, fudgestudios

Binar...
Спасибо!


apostlion@gmail.com

@apostlion
Upcoming SlideShare
Loading in …5
×

RubyBarCamp “Полезные gems и plugins”

1,305 views

Published on

Слайды Гилберто Апостлиона

Published in: Technology
  • Be the first to comment

  • Be the first to like this

RubyBarCamp “Полезные gems и plugins”

  1. 1. GEMS / PLUGINS Интересно, полезно, весело
  2. 2. Что такое джемс? RubyGems (rubygems.org) — пакетный менеджер для руби Единый формат распространения отдельных программ и библиотек Программа для установки библиотек (джемс) Сервер для распространения джемс
  3. 3. Преимущества джемс require ‘rubygems’ require ‘gemname’ sudo gem update Отсутствие централизации Стандартный формат: 8300 джемс на Rubyforge, 7400 джемс на Github
  4. 4. Github 125000 пользователей 100000 проектов gists GitHub Pages
  5. 5. restful-authentication (technoweenie) ./script/generate authenticated user sessions map.signup ‘/signup’, :controller => ‘users’, :action => ‘new’ map.login ‘/login’, :controller => ‘session’, :action => ‘new’ map.logout ‘/logout’, :controller => ‘session’, :action => ‘destroy’
  6. 6. authlogic (binarylogic) class UserSession < Authlogic::Session::Base # specify configuration here, such as: # logout_on_timeout true # ...many more options in the documentation end UserSession.create(:login => "john", :password => "my password", :remember_me => true) session.destroy
  7. 7. will_paginate (mislav) Post.paginate :page => 1, :order => 'created_at DESC' @posts = Post.paginate_by_board_id @board.id, :page => params[:page], :order => 'updated_at DESC' <%= will_paginate @posts %>
  8. 8. paperclip (thoughtbot) class User < ActiveRecord::Base has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" } end <%= image_tag @user.avatar.url %> <%= image_tag @user.avatar.url(:medium) %> <%= image_tag @user.avatar.url(:thumb) %>
  9. 9. cucumber (aslakhellesoy) Feature: Addition In order to avoid silly mistakes As a math idiot I want to be told the sum of two numbers Scenario: Add two numbers Given I visit the calculator page And I fill in '50' for 'first' And I fill in '70' for 'second' When I press 'Add' Then I should see 'Answer: 120'
  10. 10. cucumber (cont’d) Given /^I visit the calculator page$/ do   visit '/add' end Given /^I fill in '(.*)' for '(.*)'$/ do |value, field|   fill_in(field, :with => value) end When /^I press '(.*)'$/ do |name|   click_button(name) end Then /^I should see '(.*)'$/ do |text|   response_body.should contain(/#{text}/m) end 
  11. 11. attachment_fu (technoweenie) has_attachment :size => 1.megabyte..2.megabytes has_attachment :content_type => 'application/pdf' has_attachment :store => :s3, :cloudfront => true attachment_obj.public_filename #=> /attachments/2/file.jpg attachment_obj.public_filename(:thumb) #=> /attachments/2/file_thumb.jpg
  12. 12. webrat (brynary) visit home_path click_link "Sign up" fill_in "Email", :with => "good@example.com" select "Free account" click_button "Register"
  13. 13. bort (fudgestudios) default css rm rails.png/index.html page title helper application layout filtering password /password_confirmation database for sessions capistrano for git/passenger plugins (RESTful authentication, role requirement, Open ID authentication, will_paginate, rspec/rspec-rails, exception notifier, asset packager)
  14. 14. whenever (javan) wheneverize . every 3.hours do runner "MyModel.some_process" rake "my:rake:task" end every 1.day, :at => '4:30 am' do command "/usr/bin/my_great_command" end whenever --update-crontab
  15. 15. formtastic (justinfrench) <% semantic_form_for @article do |form| %> <% form.inputs :name => "Basic" do %> <%= form.input :title %> <%= form.input :publication_state, :as => :radio %> <%= form.input :allow_comments, :label => "Allow commenting on this article" %> <% end %>` <% form.inputs :name => "Advanced" do %> <%= form.input :keywords, :required => false, :hint => "Example: ruby, rails, forms" %> <% end %> <% form.inputs :name => "Author", :for => :author do |author_form| %> <%= author_form.input :first_name %> <%= author_form.input :last_name %> <% end %> <% form.buttons do %> <%= form.commit_button %> <% end %> <% end %>
  16. 16. delayed_job (tobi) create_table :delayed_jobs, :force => true do |table| table.integer :priority, :default => 0 #Allows some jobs to jump to the front of the queue table.integer :attempts, :default => 0 #Provides for retries, but still fail eventually. table.text :handler #YAML-encoded string of the object that will do work table.string :last_error #reason for last failure (See Note below) table.datetime :run_at #When to run. Could be Time.now for immediately, or sometime in the future. table.datetime :locked_at #Set when a client is working on this object table.datetime :failed_at #Set when all retries have failed (actually, by default, the record is deleted instead) table.string :locked_by #Who is working on this object (if locked) table.timestamps end MyJob#perform
  17. 17. haml (Hampton Caitlin) %ul %li Salt %li Pepper %p Date/Time: - now = DateTime.now %strong= now - if now > DateTime.parse("December 31, 2006") = "Happy new " + "year!" !main_bg= #46ar12 !main_width= 40em #main background-color = !main_bg width = !main_width .sidebar background-color = !main_bg + #333333 width = !main_width - 25em
  18. 18. searchlogic (binarylogic) User.username_equals("bjohnson") User.username_does_not_equal("bjohnson") User.username_begins_with("bjohnson") User.username_not_begin_with("bjohnson") User.username_like("bjohnson") User.username_ends_with("bjohnson") User.age_greater_than(20) User.age_greater_than_or_equal_to(20) User.username_null User.username_not_null User.username_blank
  19. 19. searchlogic (cont’d) User.username_eq(10) # equals User.id_lt(10) # less than User.id_lte(10) # less than or equal to User.id_gt(10) # greater than User.id_gte(10) # greater than or equal to User.orders_total_greater_than(20) User.orders_line_items_price_greater_than(20) User.ascend_by_order_total User.descend_by_orders_line_items_price User.username_like_all("bjohnson", "thunt") #will return any users that have all of the strings in their username User.username_like_any(["bjohnson", "thunt"]) #also accepts an array User.username_or_first_name_like("ben") User.id_or_age_lt_or_username_or_first_name_begins_with(10) search = User.search(:username_like => "bjohnson", :age_less_than => 20) User.named_scope :four_year_olds, :conditions => {:age => 4} User.search(:four_year_olds => true, :username_like => "bjohnson") User.username_like("bjohnson").age_less_than(20).paginate(:page => params[:page]) User.search(:username_like => "bjohnson", :age_less_than => 20).paginate(:page => params[:page]) User.searchlogic
  20. 20. Автора ÿбер-джемсов Technoweenie — Рик Fudgestudios — Фил Олсон, ENTP Джеффс, fudgestudios Binarylogic — Бен Javan — Джаван Махмали, Джонсон, Binary Logic Inkling Markets Mislav — Мислав Justinfrench — Джастин Марохнич, Uniqpath Френч, Indent Aslakhellesoy — Аслак Tobi — Тобиас Лютке, Хеллесёй, BEKK Consulting JadedPixel Brynary — Брайан hampton — Хэмптон Хелмкамп, weplay Кейтлин
  21. 21. Спасибо! apostlion@gmail.com @apostlion

×