ruby on rails の特徴
Model
- Model は ActiveRecord を利用
- SQLite3, MySQL, PostgreSQL に標準対応
View
- ERB(Embedded RuBy), Haml, Slim といったテンプレートエンジンを利用
Controller
- Action(GET, POST, PATCH(PUT), DELETE) を定義
install(centos)
# ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
# gem install rails
# gem list rails
*** LOCAL GEMS ***
rails (4.2.4)
rails-deprecated_sanitizer (1.0.3)
rails-dom-testing (1.0.7)
rails-html-sanitizer (1.0.2)
sprockets-rails (3.0.0.beta2)
# rbenv rehash
# rails -v
Rails 4.2.4
# cd /opt/; pwd
# rails new book_library
# cd book_library
# vim Gemfile
gem 'rb-readline'
# bundle install --path vendor/bundle
# bundle exec rails generate scaffold book title:string author:string outline:text
# bundle exec rake db:migrate
# bundle exec rails server
Management version
# cd /opt/book_library; pwd
# git init
# vim .gitignore
doc/
*.swp
*~
.project
.DS_Store
.idea
.secret
# git add .
# git status
# git commit -m "initialize repository"
# git log
commit c1740fbff8c95ddf37b4e166d660ce42aee6d033
Author: tsujimitsu <tsujimitsu@codelogue.com>
Date: Sun Aug 30 15:33:17 2015 +0900
initialize repository
# rm -rf app
# ls -ld app
ls: cannot access app: No such file or directory
# git checkout -f
# ls -ld app
drwxr-xr-x 8 root root 4096 2015-08-30 15:47 app
# git branch
* master
# git checkout -b modify-readme
# git branch
master
* modify-readme
# git mv README.rdoc README.md
# git commit -a -m "Improve the README file"
# git branch
master
* modify-readme
# git checkout master
# git branch
* master
modify-readme
# git merge modify-readme
# git branch -d modify-readme
# vim Gemfile
group :production do
gem 'pg'
gem 'rails_12factor'
end
Database
- Active Record 経由での接続設定は config/database.yml で行う。
Contents
- 静的コンテンツは root/public 配下に配置する。
- root へのアクセスをコントローラで処理する場合は public/index.html は削除しておく。
- 部分でンプレートは「_form.html.erb」のようにアンダーバーで始める
Heroku
# cd /tmp; pwd
# wget -O- https://toolbelt.heroku.com/install.sh | sh
# vim /root/.bashrc
PATH=$PATH:/usr/local/heroku/bin
# source /root/.bashrc
# heroku version
heroku-toolbelt/3.41.4 (x86_64-linux) ruby/2.1.2
You have no installed plugins.
# heroku login
# cd /opt/book_library/; pwd
# heroku create
# git push heroku master
heroku はsqliteに対応していなかったのでpostgresqlへ変更予定
Ruby
クラスのgetterは「attr_reader」で一元定義できる
クラスのsetterは「attr_writer」で一元定義できる
上記2つは「attr_accessor」でまとめて定義できる
クラスメソッドは以下のようにクラス名を含めて定義する
def Classname.data
end
もしくは
def self.data
end
クラス変数は@@で定義する
ruby on rails
- link_to helper でリンクは表示させる
- リンクは名前付きルートで指定可能(/aboutであれば about_path とか)
- view の共通部分は「application.html.erb」に記載される
- rails console でCLI操作できる
- rails console を見やすくするhirb, pry-rails, hirb-unicode
- rails ではメソッド(GET, POST)をVERBという
CRUD(Webサービスを構成する7つのアクション)
- create(作成)
- new(新規作成画面)
- create(作成・保存)
- read(取得)
- index(一覧表示画面)
- show(詳細表示画面)
- update(更新)
- delete(削除)
ominiauth-facebook
# vim Gemfile
gem 'omniauth'
gem 'omniauth-facebook'
# bundle install --path vendor/bundle
# vim ../config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, ENV['FB_APP_ID'], ENV['FB_SECRET']
end
OmniAuth.config.on_failure = Proc.new { |env|
OmniAuth::FailureEndpoint.new(env).redirect_to_failure
}
... controller などを作る...
# bundle exec rails g model SocialProfile user:references provider uid name nickname email url image_url description other:text credentials:text raw_info:text
# bundle exec rake db:migrate
% facebook settings - Basic
Display name: httpproxy
Namespace: httpproxy
App Domains: fbproxy.codelogue.com
Website
- Site URL: http://fbproxy.codelogue.com:3000/
% facebook settings - Advanced
Server IP Whitelist: xxx.xxx.xxx.xxx
Valid OAuth redirect URIs: http://fbproxy.codelogue.com:3000/auth/facebook/callback
SQL
bundle exec rails dbconsole
.table
.schema tablename
select * from tablenamel
.quit
bundle exec rake db:drop:all
bootstrap
#rails new cafelogue --skip-bundle
#vim Gemfile
gem 'rb-readline'
gem 'less-rails'
gem 'therubyracer'
gem 'execjs'
gem 'twitter-bootstrap-rails'
#bundle install --path vendor/bundle
#bundle exec rails g scaffold user name:string password:string email:string regist_date:date
#bundle exec rake db:migrate
#bundle exec rails g bootstrap:install less
#bundle exec rails g bootstrap:themed Users
devise_invitable
reference