Ecossistema Ruby - versão SCTI UNF 2013

161
Ecossistema Ruby Fabio Akita @akitaonrails codeminer42.com

description

Palestra sobre alguns aspectos do ecossistema Ruby e Rails apresentada na SCTI UNF 2013 em Campos dos Goytacazes

Transcript of Ecossistema Ruby - versão SCTI UNF 2013

Page 1: Ecossistema Ruby - versão SCTI UNF 2013

Ecossistema

RubyFabio Akita

@akitaonrails codeminer42.com

Page 2: Ecossistema Ruby - versão SCTI UNF 2013

www.codeminer42.com

Page 3: Ecossistema Ruby - versão SCTI UNF 2013

www.codeminer42.com

Page 4: Ecossistema Ruby - versão SCTI UNF 2013

www.codeminer42.com

Page 5: Ecossistema Ruby - versão SCTI UNF 2013

www.codeminer42.com

Page 6: Ecossistema Ruby - versão SCTI UNF 2013

www.codeminer42.com

Page 7: Ecossistema Ruby - versão SCTI UNF 2013

www.codeminer42.com

Page 8: Ecossistema Ruby - versão SCTI UNF 2013

www.codeminer42.com

Page 9: Ecossistema Ruby - versão SCTI UNF 2013

www.codeminer42.com

Page 10: Ecossistema Ruby - versão SCTI UNF 2013

www.codeminer42.com

Page 11: Ecossistema Ruby - versão SCTI UNF 2013

www.codeminer42.com

Page 12: Ecossistema Ruby - versão SCTI UNF 2013

www.codeminer42.com

Page 13: Ecossistema Ruby - versão SCTI UNF 2013

www.codeminer42.com

Page 14: Ecossistema Ruby - versão SCTI UNF 2013
Page 15: Ecossistema Ruby - versão SCTI UNF 2013

http://u.akita.ws/sctiunf2013

Page 16: Ecossistema Ruby - versão SCTI UNF 2013

9 ANOS!

Page 17: Ecossistema Ruby - versão SCTI UNF 2013
Page 18: Ecossistema Ruby - versão SCTI UNF 2013
Page 19: Ecossistema Ruby - versão SCTI UNF 2013

Rails 3.2.15

Rails 4.0.1

Page 20: Ecossistema Ruby - versão SCTI UNF 2013

Ruby 1.9.3 p448

Ruby 2.0.0 p247

JRuby 1.7.6 (Java 7)

Page 21: Ecossistema Ruby - versão SCTI UNF 2013

Ruby 1.9.3 p448

Ruby 2.0.0 p247

JRuby 1.7.6 (Java 7)

Page 22: Ecossistema Ruby - versão SCTI UNF 2013

http://u.akita.ws/ruby_usage

Page 23: Ecossistema Ruby - versão SCTI UNF 2013
Page 24: Ecossistema Ruby - versão SCTI UNF 2013
Page 25: Ecossistema Ruby - versão SCTI UNF 2013
Page 26: Ecossistema Ruby - versão SCTI UNF 2013

gem install rails

Page 27: Ecossistema Ruby - versão SCTI UNF 2013

gem install rails

bundle install

Page 28: Ecossistema Ruby - versão SCTI UNF 2013
Page 29: Ecossistema Ruby - versão SCTI UNF 2013

• Filosofia (Agilistas)

Page 30: Ecossistema Ruby - versão SCTI UNF 2013

• Filosofia (Agilistas)

• Polarização do Rails (Ecossistema)

Page 31: Ecossistema Ruby - versão SCTI UNF 2013

• Filosofia (Agilistas)

• Polarização do Rails (Ecossistema)

• Escolha das Startups (Economia)

Page 32: Ecossistema Ruby - versão SCTI UNF 2013

• Filosofia (Agilistas)

• Polarização do Rails (Ecossistema)

• Escolha das Startups (Economia)

• Cloud Computing (Infraestrutura)

Page 33: Ecossistema Ruby - versão SCTI UNF 2013

Repositórios

Page 34: Ecossistema Ruby - versão SCTI UNF 2013
Page 35: Ecossistema Ruby - versão SCTI UNF 2013

http://u.akita.ws/git

Page 36: Ecossistema Ruby - versão SCTI UNF 2013
Page 37: Ecossistema Ruby - versão SCTI UNF 2013

git checkout master

Page 38: Ecossistema Ruby - versão SCTI UNF 2013

git checkout master

git checkout -b new_branch

Page 39: Ecossistema Ruby - versão SCTI UNF 2013

git checkout master

git checkout -b new_branch

git commit -a -m “new change”

Page 40: Ecossistema Ruby - versão SCTI UNF 2013

git checkout master

git checkout -b new_branch

git commit -a -m “new change”

git push origin new_branch

Page 41: Ecossistema Ruby - versão SCTI UNF 2013
Page 42: Ecossistema Ruby - versão SCTI UNF 2013
Page 43: Ecossistema Ruby - versão SCTI UNF 2013
Page 44: Ecossistema Ruby - versão SCTI UNF 2013
Page 45: Ecossistema Ruby - versão SCTI UNF 2013
Page 46: Ecossistema Ruby - versão SCTI UNF 2013
Page 47: Ecossistema Ruby - versão SCTI UNF 2013
Page 48: Ecossistema Ruby - versão SCTI UNF 2013
Page 49: Ecossistema Ruby - versão SCTI UNF 2013
Page 50: Ecossistema Ruby - versão SCTI UNF 2013
Page 51: Ecossistema Ruby - versão SCTI UNF 2013
Page 52: Ecossistema Ruby - versão SCTI UNF 2013

Desenvolvimento

Page 53: Ecossistema Ruby - versão SCTI UNF 2013
Page 54: Ecossistema Ruby - versão SCTI UNF 2013
Page 55: Ecossistema Ruby - versão SCTI UNF 2013
Page 56: Ecossistema Ruby - versão SCTI UNF 2013
Page 57: Ecossistema Ruby - versão SCTI UNF 2013

vagrant init precise32 http://files.vagrantup.com/precise32.box

Page 58: Ecossistema Ruby - versão SCTI UNF 2013

vagrant init precise32 http://files.vagrantup.com/precise32.box

vagrant up

Page 59: Ecossistema Ruby - versão SCTI UNF 2013

vagrant init precise32 http://files.vagrantup.com/precise32.box

vagrant up

vagrant ssh

Page 60: Ecossistema Ruby - versão SCTI UNF 2013

vagrant init precise32 http://files.vagrantup.com/precise32.box

vagrant up

vagrant ssh

vagrant halt

Page 61: Ecossistema Ruby - versão SCTI UNF 2013
Page 62: Ecossistema Ruby - versão SCTI UNF 2013
Page 63: Ecossistema Ruby - versão SCTI UNF 2013
Page 64: Ecossistema Ruby - versão SCTI UNF 2013
Page 65: Ecossistema Ruby - versão SCTI UNF 2013

brew install ack ctags git macvim wget zsh

Page 66: Ecossistema Ruby - versão SCTI UNF 2013
Page 67: Ecossistema Ruby - versão SCTI UNF 2013

sh -c "`curl -fsSL https://raw.github.com/skwp/dotfiles/

master/install.sh`"

Page 68: Ecossistema Ruby - versão SCTI UNF 2013

sh -c "`curl -fsSL https://raw.github.com/skwp/dotfiles/

master/install.sh`"

cd ~/.yadr; rake update

Page 69: Ecossistema Ruby - versão SCTI UNF 2013

http://u.akita.ws/vim

Page 70: Ecossistema Ruby - versão SCTI UNF 2013

Continuous Integration (CI)

Page 71: Ecossistema Ruby - versão SCTI UNF 2013
Page 72: Ecossistema Ruby - versão SCTI UNF 2013
Page 73: Ecossistema Ruby - versão SCTI UNF 2013
Page 74: Ecossistema Ruby - versão SCTI UNF 2013
Page 75: Ecossistema Ruby - versão SCTI UNF 2013
Page 76: Ecossistema Ruby - versão SCTI UNF 2013
Page 77: Ecossistema Ruby - versão SCTI UNF 2013

Exceptions Tracking

Page 78: Ecossistema Ruby - versão SCTI UNF 2013
Page 79: Ecossistema Ruby - versão SCTI UNF 2013
Page 80: Ecossistema Ruby - versão SCTI UNF 2013
Page 81: Ecossistema Ruby - versão SCTI UNF 2013
Page 82: Ecossistema Ruby - versão SCTI UNF 2013
Page 83: Ecossistema Ruby - versão SCTI UNF 2013
Page 84: Ecossistema Ruby - versão SCTI UNF 2013
Page 85: Ecossistema Ruby - versão SCTI UNF 2013

# Gemfile group :production do gem 'airbrake' end # config/initializers/errbit.rb if defined?(Airbrake) Airbrake.configure do |config| config.api_key = 'SUA_CHAVE' config.host = 'errbit.cm42.io' config.port = 80 config.secure = config.port == 443 end end

Page 86: Ecossistema Ruby - versão SCTI UNF 2013
Page 87: Ecossistema Ruby - versão SCTI UNF 2013

MyApp::Application.config.middleware.use ExceptionNotification::Rack, :email => { :email_prefix => "[MyApp] ", :sender_address => %{"notifier" <[email protected]>}, :exception_recipients => %w{[email protected]} }

Page 88: Ecossistema Ruby - versão SCTI UNF 2013

Code Quality

Page 89: Ecossistema Ruby - versão SCTI UNF 2013
Page 90: Ecossistema Ruby - versão SCTI UNF 2013
Page 91: Ecossistema Ruby - versão SCTI UNF 2013
Page 92: Ecossistema Ruby - versão SCTI UNF 2013
Page 93: Ecossistema Ruby - versão SCTI UNF 2013
Page 94: Ecossistema Ruby - versão SCTI UNF 2013
Page 95: Ecossistema Ruby - versão SCTI UNF 2013

gem install brakeman

brakeman -o report.html

Page 96: Ecossistema Ruby - versão SCTI UNF 2013
Page 97: Ecossistema Ruby - versão SCTI UNF 2013
Page 98: Ecossistema Ruby - versão SCTI UNF 2013

gem install rails_best_practices

rails_best_practices -f html .

Page 99: Ecossistema Ruby - versão SCTI UNF 2013
Page 100: Ecossistema Ruby - versão SCTI UNF 2013
Page 101: Ecossistema Ruby - versão SCTI UNF 2013

gem install excellent

excellent -o excellent.html .

Page 102: Ecossistema Ruby - versão SCTI UNF 2013
Page 103: Ecossistema Ruby - versão SCTI UNF 2013
Page 104: Ecossistema Ruby - versão SCTI UNF 2013

# spec/spec_helper.rb require 'simplecov' SimpleCov.start 'rails'

Page 105: Ecossistema Ruby - versão SCTI UNF 2013
Page 106: Ecossistema Ruby - versão SCTI UNF 2013
Page 107: Ecossistema Ruby - versão SCTI UNF 2013
Page 108: Ecossistema Ruby - versão SCTI UNF 2013
Page 109: Ecossistema Ruby - versão SCTI UNF 2013

http://u.akita.ws/assets

Page 110: Ecossistema Ruby - versão SCTI UNF 2013
Page 111: Ecossistema Ruby - versão SCTI UNF 2013
Page 112: Ecossistema Ruby - versão SCTI UNF 2013

# Gemfile gem 'sunspot_rails' gem "sunspot_with_kaminari" group :development do gem 'sunspot_solr' gem 'progress_bar' end

Page 113: Ecossistema Ruby - versão SCTI UNF 2013

# config/sunspot.yml production: solr: hostname: index.websolr.com port: 80 log_level: WARNING path: /solr/69xxxxxxx39 # read_timeout: 2 # open_timeout: 0.5 development: solr: hostname: localhost port: 8982 log_level: INFO test: solr: hostname: localhost port: 8981 log_level: WARNING

Page 114: Ecossistema Ruby - versão SCTI UNF 2013

# app/models/document.rb class Document < ActiveRecord::Base searchable do text :title, :more_like_this => true text :excerpt_html, :more_like_this => true text :body_html, :more_like_this => true string :cached_tag_list time :published_at end end

Page 115: Ecossistema Ruby - versão SCTI UNF 2013

<form id="formsearch" method="get" action="<%= searches_url %>"> <input type="text" name="q" /> </form>

Page 116: Ecossistema Ruby - versão SCTI UNF 2013

class SearchesController < ApplicationController def index page = params[:page] || 1 query = (params[:q] || "").strip @posts = Sunspot.search(Post) do fulltext query do query_phrase_slop 1 phrase_fields :title => 2.0 phrase_slop 1 end paginate :page => page, :per_page => Post::DEFAULT_LIMIT order_by :score, :desc end end end

Page 117: Ecossistema Ruby - versão SCTI UNF 2013
Page 118: Ecossistema Ruby - versão SCTI UNF 2013
Page 119: Ecossistema Ruby - versão SCTI UNF 2013
Page 120: Ecossistema Ruby - versão SCTI UNF 2013

Mensagens Assíncronas

Page 121: Ecossistema Ruby - versão SCTI UNF 2013
Page 122: Ecossistema Ruby - versão SCTI UNF 2013

<script src="http://js.pusher.com/2.1/pusher.min.js"></script> <script> var pusher = new Pusher('SUA_CHAVE'); var channel = pusher.subscribe('meu-canal'); channel.bind('meu-evento', function(data) { alert('Chegou um evento com a mensagem: ' + data.message); }); </script>

Page 123: Ecossistema Ruby - versão SCTI UNF 2013

require 'pusher' Pusher.app_id = 'APP_ID' Pusher.key = 'APP_KEY' Pusher.secret = 'APP_SECRET' class HelloWorldController < ApplicationController def hello_world Pusher['meu-canal'].trigger('meu-evento', {:message => 'hello world'}) end end

Page 124: Ecossistema Ruby - versão SCTI UNF 2013
Page 125: Ecossistema Ruby - versão SCTI UNF 2013
Page 126: Ecossistema Ruby - versão SCTI UNF 2013
Page 127: Ecossistema Ruby - versão SCTI UNF 2013
Page 128: Ecossistema Ruby - versão SCTI UNF 2013
Page 129: Ecossistema Ruby - versão SCTI UNF 2013

Web Servers

Page 130: Ecossistema Ruby - versão SCTI UNF 2013
Page 131: Ecossistema Ruby - versão SCTI UNF 2013
Page 132: Ecossistema Ruby - versão SCTI UNF 2013
Page 133: Ecossistema Ruby - versão SCTI UNF 2013

gem install passenger

sudo passenger-install-nginx-module

Page 134: Ecossistema Ruby - versão SCTI UNF 2013

http://u.akita.ws/ubuntu1204

Page 135: Ecossistema Ruby - versão SCTI UNF 2013
Page 136: Ecossistema Ruby - versão SCTI UNF 2013

heroku create

git push heroku master

Page 137: Ecossistema Ruby - versão SCTI UNF 2013
Page 138: Ecossistema Ruby - versão SCTI UNF 2013
Page 139: Ecossistema Ruby - versão SCTI UNF 2013
Page 140: Ecossistema Ruby - versão SCTI UNF 2013
Page 141: Ecossistema Ruby - versão SCTI UNF 2013
Page 142: Ecossistema Ruby - versão SCTI UNF 2013
Page 143: Ecossistema Ruby - versão SCTI UNF 2013
Page 144: Ecossistema Ruby - versão SCTI UNF 2013

gem install af

Page 145: Ecossistema Ruby - versão SCTI UNF 2013

gem install af

af push --runtime ruby193

Page 146: Ecossistema Ruby - versão SCTI UNF 2013

gem install af

af push --runtime ruby193

af update sua_aplicacao

Page 147: Ecossistema Ruby - versão SCTI UNF 2013

gem install af

af push --runtime ruby193

af update sua_aplicacao

af restart sua_aplicacao

Page 148: Ecossistema Ruby - versão SCTI UNF 2013
Page 149: Ecossistema Ruby - versão SCTI UNF 2013
Page 150: Ecossistema Ruby - versão SCTI UNF 2013
Page 151: Ecossistema Ruby - versão SCTI UNF 2013

gem install helios

helios new myapp

createdb -h localhost myapp

cd myapp && helios start

Page 152: Ecossistema Ruby - versão SCTI UNF 2013

# Gemfile gem 'helios' gem 'pg' # config/application.rb config.middleware.use Helios::Application do service :data, model: 'path/to/DataModel.xcdatamodel' service :push_notification, apn_certificate: 'path/to/apple_push_notification.pem', apn_environment: 'development' service :in_app_purchase service :passbook end

Page 153: Ecossistema Ruby - versão SCTI UNF 2013
Page 154: Ecossistema Ruby - versão SCTI UNF 2013

Educação

Page 155: Ecossistema Ruby - versão SCTI UNF 2013
Page 156: Ecossistema Ruby - versão SCTI UNF 2013
Page 157: Ecossistema Ruby - versão SCTI UNF 2013
Page 158: Ecossistema Ruby - versão SCTI UNF 2013
Page 159: Ecossistema Ruby - versão SCTI UNF 2013
Page 160: Ecossistema Ruby - versão SCTI UNF 2013
Page 161: Ecossistema Ruby - versão SCTI UNF 2013

Thanks! @akitaonrails