よく使うコマンド
作る系&削除
コントローラーの作成・削除
$ rails g controller <name>
$ rails d controller <name>
加えて、アクションとビューのテンプレートを一緒に作る
$ rails g controller <name> index show edit
マイグレーションファイルの作成
$ rails g migration AddTestNoToDevice test_no:integer
モデルクラス&マイグレーションファイルの作成
$ rails g model book isbn:string price:integer author:references published:date cd:boolean
モデル&マイグレーションファイル&コントローラー&ビューのテンプレート&RESTFulなrouteを一度に作成&削除
$ rails g scaffold Book isbn:string price:integer author:references published:date cd:boolean
$ rails d scaffold Book
※事前に何が起こるかを確認するには `-p` を付ける (dry-run)
よく使う scaffold
のオプション。さしあたり使わないものは作らせないという方針で。
$ rails g scaffold ModelMame xxx:string --skip-assets --skip-helper --skip-stylesheets --skip-view-specs --skip-controller-specs --skip-routing-specs --skip-request-specs
参考:
いつも忘れる「Railsのgenerateコマンド」の備忘録
実はこんなにある rails generate
DB系rake task
Rails5では rails
コマンドがrake
タスクも実行できるようになったため、以下 rake
の部分は rails
でも正しく動作するはず。ただ、まだ当分の間はRails4を触る機会もあると思うので、ここでは rake
と記載しておく。
全てのタスクで -n
オプションを付けるとdry runになる(実際には処理を実行せずに何が起こるのかだけを表示してくれる)ので、迷ったら -n
を付けて実行してみること。
# DBを作成するだけ
$ rake db:create
# 最新のmigrationまで順次実行
$ rake db:migrate
# 初期データの投入 ※既存データに追加される。
# ※unique制約違反を回避するため、db:resetすることの方が多いかな。
$ rake db:seed
複合系タスクは以下の表にまとめた。
タスク | drop | create | migrate | schema:load | seed |
---|---|---|---|---|---|
db:setup | 〇 | 〇 | 〇 | ||
db:reset | 〇 | 〇 | 〇 | 〇 | |
db:migrate:reset | 〇 | 〇 | 〇 |
DBクライアントの起動&よく使うコマンド
$ rails db
=> \d … テーブル一覧
=> \d テーブル名 … テーブルschema
=> select * from users;
=> \? … ヘルプ
=> \h … SQLヘルプ
=> \q … 終了
sqlite> .tables
sqlite> .schema books
sqlite> SELECT * FROM books;
sqlite> .quit
rspecのspecファイルを作る
$ rails g rspec:model Book
$ rails g rspec:controller Books ※Bookじゃだめ
$ rails g rspec:feature blogs
application.rb で controller_specs: false
や model_specs: false
などとしている場合、上記コマンドで何も生成されないので注意。
参考サイト: RailsでRspecを使用する
bundle/binの内容を Windows用のものからLinux用のものに変更する
Windows上でアプリケーションを作ると、bundle/binに作られる rails/rake...などのコマンドが全てruby.exeに依存したものになる。
#!/usr/bin/env ruby.exe
そのため、これをgitで共有し、Linux上で開発したりしようとするとちょいちょいめんどくさいことになる。
そんなときに必要となったのが、bundle/binの中身をLinux向けのものに置き換えるやり方。
$ cd <アプリケーションディレクトリ>
$ bundle config --delete bin # Turn off Bundler's stub generator
$ rake app:update:bin # Use the new executables ※Rails4では rails:update:bin だった。
$ git add bin # Add bin/ to source control
#!/usr/bin/env ruby
ざっと見たところ1行目以外には変化がないので、.exe
を削除するだけで良かったのかもしれない。。。
参考: Should I add the Rails 4 bin/ directory to git? - StackOverFlow
MySQLのrootパスワードを変更(空にする)
手順の詳細については理解していないので、もしかしたら危険なことをやっているかもしれない。要注意!
$ sudo service mysql stop
$ sudo /usr/bin/mysqld_safe -u root --skip-grant-tables &
$ mysql -u root
mysql> use mysql
mysql> UPDATE user SET Password = password('') where user = 'root';
mysql> flush privileges;
mysql> \q
$ sudo killall mysqld
$ sudo service mysql start
その他
ActiveRecordについてはこちらにまとめています。
ActiveRecord CRUDサンプル - Qiita
ActiveRecord ~ 複数テーブルにまたがる検索(先読み、JOINなど) - Qiita