This is a basic Rails project setup on a Mac that helps me get up to speed when building a new app.
It is by no means a guide, reference or best practice.
-
rails new project_name -d postgresql
-
cd project_name
-
cp config/database.yml config/example.database.yml
-
vim config/database.yml
development: adapter: postgresql encoding: unicode database: project_name_development template: template0 pool: 5 username: username password: userpass test: adapter: postgresql encoding: unicode database: project_name_test template: template0 pool: 5 username: username password: userpass min_messages: warning
-
vim .gitignore
(...) .DS_Store /config/database.yml
-
git init
-
git add -A
-
git commit -m "Initial setup."
(Start PostgreSQL daemon if not running)
rake db:create
(Make jQuery play nice with turbolinks)
-
vim Gemfile
(...) # jQuery :heart: Turbolinks gem 'jquery-turbolinks'
-
bundle install
-
vim app/assets/javascripts/application.js
//= require jquery //= require jquery.turbolinks //= require jquery_ujs // // ... your other scripts here ... // //= require turbolinks
-
vim Gemfile
(...) # Unicorn (aka make your app fly) gem 'unicorn'
-
bundle install
-
vim Procfile
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
-
vim config/unicorn.rb
worker_processes 3 timeout 30 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
-
foreman start
-
vim Gemfile
(...) # Auth gem "devise"
-
bundle install
-
rails generate devise:install
-
vim config/environments/development.rb
(# config.action_view.raise_on_missing_translations = true) config.action_mailer.default_url_options = { host: 'localhost', port: 5000 } (end)
-
rails g controller home index
-
vim config/routes.rb
(Rails.application.routes.draw do) root 'home#index' (...)
-
vim config/application.rb
(config.active_record.raise_in_transactional_callbacks = true) config.assets.initialize_on_precompile = false (end)
-
vim Gemfile
(...) # Bootstrapping gem "therubyracer" gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS gem "twitter-bootstrap-rails"
-
bundle install
-
rails generate bootstrap:install less
-
vim app/assets/stylesheets/application.css
(* file per style scope.) *= require bootstrap_and_overrides (*= require_tree .)