Ruby on Railsでscaffoldするまでおさらい

Railsはインストール済みの状態からRailsをいちから復習してみました

Railsは
– DRY
– COC
– REST
– MVC
な設計になっています

  • dry

don’t repeat yourself
同じことを繰り返さない

  • coc

convension over configuration 設定より規約
規約をしばって効率化する設計

  • rest

すべてのリソースに一意となる識別子がある、とかいう考えかたです
URIに対してHTTPメソッドでアクセスし処理をします

  • mvcアーキテクチャー

Model View Controller
で処理を分ける

$ rails new app

appディレクトリにrailsが入ります

javascript runtimeがないときは
therubyracer gemを入れるといいです

私はnode.jsを入れていました

(参考)
centosにnode.jsとnpmをインストールする | bgbgbg
ubuntuにnode.jsとnpmをインストールする | bgbgbg

$ rails server (省略で rails s )
でサーバーが立ち上がる
rails 4.2では rails s -b 0.0.0.0としないとlocalhost以外からアクセスできません

サーバーを止めるには ctrl + c で止めます

$ rails g scaffold Use name:string score:integer
でUserモデルに string型のnameとinteger型のscoreを持ったアプリができる

$ rake db:migrate
でデータベースへmigrationファイルを適用する(テーブルとか作る)

これで
http://localhost:3000/users/
にアクセスすれば

rails-scaffold
rails-scaffold2
rails-scaffold3

といったアプリができあがります

素のRailsでコントローラーのデバッグをする

デバッグ用のGemとかいれず、Railsだけをいれているときコントローラーのデバッグをするなら

logger.debug (ログに出したいもの)
とすれば、logsディレクトリにログがでます

logger.debug params

とかです

development環境なら

logs/development.log

へログが出力されます

Railsのデータベースをsqlite3からpostgresqlに変更する

Railsのデータベースをsqlite3からpostgresqlに変更してみました
postgresqlはインストールして、Rails用のユーザーを作っておきます

Gemfileを変更します

-gem ‘sqlite3’
+gem ‘pg’

sqlite3の代わりにpgに変更

データベース設定ファイルを修正

config/database.yml

default: &default
  adapter: postgresql
  encoding: utf8
  reconnect: false
  pool: 5
  username: root
  password: root
  host: localhost

development:
  <<: *default
  database: sample_dev

test:
  <<: *default
  database: sample_test

production:
  <<: *default
  database: sample

というふうにpostgresql用に変更

データベース作成

$ rake db:create
$ rake db:migrate

でできあがり

bundler+rbenvを使っていてrubyのバージョンをあげてみた

rbenvでrubyのバージョン管理をしていてrubyのバージョンを上げてみました

いまのrubyのバージョンを確認

$ ruby -v
2.2.0

$ rbenv versions
system
2.1.2
* 2.2.0 (set by /vagrant/.ruby-version)

でも入ってるrubyのバージョンが見れます

2.2.2を入れたいのでrbenvであるか確認

$ rbenv install –list

でなければ、rbenvを最新に

$ cd ~/.rbenv
$ git pull origin master
$ cd ~/.rbenv/plugins/ruby-build
$ git pull origin master

確認

$ rbenv install –list

で、2.2.2が出てきたのでインストール

$ rbenv install 2.2.2

しばし待ちます

これだとまだ有効になってないので有効に

$ rbenv local 2.2.2

確認

$ rbenv versions
system
2.1.2
2.2.0
* 2.2.2 (set by /vagrant/wazukatea/.ruby-version)

$ ruby -v
ruby 2.2.2p95

できました
bundle installするとエラーがでました

The `bundle' command exists in these Ruby versions:
  2.1.2
  2.2.0

再度bundler入れてみて
$ gem install bundler

直りました