Rails Workshop 
@alexruperez
Create a new app 
rails -v 
rails new workshop --database=postgresql 
cd workshop
Gemfile 
gem 'rails_12factor' 
gem 'less-rails' 
gem 'twitter-bootstrap-rails' 
gem 'devise' 
gem 'therubyracer' (uncomment) 
gem 'unicorn' (uncomment)
Run the new app 
bundle install 
bundle exec rake db:create 
bundle exec rake db:migrate 
rails s
Generate devise models 
rails generate devise:install 
rails generate devise User 
Add ''config.action_mailer.default_url_options = 
{ host: 'localhost', port: 3000 }'' to config/ 
environments/development.rb 
bundle exec rake db:migrate
Apply Twitter Bootstrap 
rails generate bootstrap:install less 
rails g bootstrap:layout application 
rails generate scaffold_controller User 
Add ''before_action :authenticate_user!'' to app/controllers/ 
users_controller.rb 
rails g bootstrap:themed Users 
Add ''resources :users'' and ''root ‘users#index’'' to config/routes.rb
Upload to Heroku 
git init 
git add . 
git commit -am 'First commit' 
heroku git:remote -a YOUR_HEROKU_APP 
git push heroku master 
heroku run rake db:migrate
web.rb 
require 'sinatra' 
set :bind, '0.0.0.0' 
get '/' do 
"Hello world!" 
end
config.ru 
require './web' 
run Sinatra::Application
config/unicorn.rb 
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3) 
timeout 15 
preload_app true 
before_fork do |server, worker| 
Signal.trap 'TERM' do 
puts 'Unicorn master intercepting TERM and sending myself QUIT instead' 
Process.kill 'QUIT', Process.pid 
end 
defined?(ActiveRecord::Base) and 
ActiveRecord::Base.connection.disconnect! 
end 
after_fork do |server, worker| 
Signal.trap 'TERM' do 
puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT' 
end 
defined?(ActiveRecord::Base) and 
ActiveRecord::Base.establish_connection 
end
Procfile 
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
Thanks! 
@alexruperez

Gigigo Rails Workshop

  • 1.
  • 2.
    Create a newapp rails -v rails new workshop --database=postgresql cd workshop
  • 3.
    Gemfile gem 'rails_12factor' gem 'less-rails' gem 'twitter-bootstrap-rails' gem 'devise' gem 'therubyracer' (uncomment) gem 'unicorn' (uncomment)
  • 4.
    Run the newapp bundle install bundle exec rake db:create bundle exec rake db:migrate rails s
  • 5.
    Generate devise models rails generate devise:install rails generate devise User Add ''config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }'' to config/ environments/development.rb bundle exec rake db:migrate
  • 6.
    Apply Twitter Bootstrap rails generate bootstrap:install less rails g bootstrap:layout application rails generate scaffold_controller User Add ''before_action :authenticate_user!'' to app/controllers/ users_controller.rb rails g bootstrap:themed Users Add ''resources :users'' and ''root ‘users#index’'' to config/routes.rb
  • 7.
    Upload to Heroku git init git add . git commit -am 'First commit' heroku git:remote -a YOUR_HEROKU_APP git push heroku master heroku run rake db:migrate
  • 8.
    web.rb require 'sinatra' set :bind, '0.0.0.0' get '/' do "Hello world!" end
  • 9.
    config.ru require './web' run Sinatra::Application
  • 10.
    config/unicorn.rb worker_processes Integer(ENV["WEB_CONCURRENCY"]|| 3) timeout 15 preload_app true before_fork do |server, worker| Signal.trap 'TERM' do puts 'Unicorn master intercepting TERM and sending myself QUIT instead' Process.kill 'QUIT', Process.pid end defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! end after_fork do |server, worker| Signal.trap 'TERM' do puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT' end defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection end
  • 11.
    Procfile web: bundleexec unicorn -p $PORT -c ./config/unicorn.rb
  • 12.