8
11

More than 5 years have passed since last update.

Rails5 各種コマンドメモ

Last updated at Posted at 2016-01-13

よく使うコマンド

作る系&削除

コントローラーの作成・削除
$ 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
PostgreSQL
=> \d            … テーブル一覧
=> \d テーブル名  … テーブルschema
=> select * from users;
=> \?   … ヘルプ
=> \h   … SQLヘルプ
=> \q   … 終了
SQLite
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: falsemodel_specs: false などとしている場合、上記コマンドで何も生成されないので注意。

参考サイト: RailsでRspecを使用する

bundle/binの内容を Windows用のものからLinux用のものに変更する

Windows上でアプリケーションを作ると、bundle/binに作られる rails/rake...などのコマンドが全てruby.exeに依存したものになる。

各コマンドの1行目
#!/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
置き換え後の各コマンドの1行目
#!/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

8
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
11