【Rails】time_ago_in_words メソッドで created_atを「〜前」と表示する

Ruby on Rails で created_atで作成日時を表示する際に、Twitterのように「〜前」という表示をする方法です。

rails time_ago_in_words

Views

ビューはこんな感じです。

Locales

configでdefault_localeを日本語に設定します。

config/application.rb

こちらを参考に、ja.ymlに datetime、distance_in_words を設定します。

config/locales/ja.yml

次のようなエラーメッセージが出ている場合は、記述ミスがあるか、インデントが合っていないかもしれません。

rails_i18nで日本語と英語をパラメータで切り替える方法はこちらの記事をご覧ください。
https://remonote.jp/rails_i18n_locale_ja_en

以上です!ご覧いただき、ありがとうございました!!😊

Docker for Macで Rails + PostgreSQLの開発環境を構築する

Mac + Rails + PostgreSQL の開発環境をDockerを使って、素早く構築するための手順です。

Docker for Macのインストール

こちらからDocker for Macをインストール ~ ダウンロード ~ Dockerアプリを起動します。

必要なファイルを作成

Railsアプリ用のディレクトリを作って、そこに移動します。今回はmyappとしました。

そして、作成したディレクトリに次の4つのファイルを以下の内容で作成します。
・ dockerfile
・ Gemfile
・ Gemfile.lock
・ docker-compose.yml

dockerfile

Gemfileは現時点では、これだけです。railsはバージョン指定なしで、最新版がインストールされます。

Gemfile

空のGemfile.lockを用意します。

Gemfile.lock(空のファイル)

docker-compose.yml

プロジェクトの構築

次のコマンドで上記ファイルを読み込み、Dockerコンテナ上に、Railsアプリケーションが作成されます。

Docker imageの作成

次のコマンドでdocker iamgeを作成します。

データベースの設定と作成

DBの設定を以下のように、追加します。

config/database.yml

そして、DBを作成するコマンドを実行します。

Dockerの起動

次のコマンドで、Dockerコンテナが立ち上がり、Rails Serverも起動します。

そして、http://localhost:3000にアクセスして、こちらのページが表示されたら、成功です。

コンテナの停止と起動

ショートカットの「Control + C」でコンテナが停止し、$ docker-compose up で起動します。
webサーバが正常に終了していない時に、次のようなログが出て、コンテナの起動に失敗することがあります。

そのような時はpid情報を削除するために、次のコマンドを実行すると解決します。

その他

開発中にrailsコマンドを実行する場合は 次のように、$ docker-compose run webをつけます。

また、Gemfileを更新したときは、$ docker-compose build をしなければいけません。なので、Gemfileを更新したときは、次の2つのコマンドを実行する必要があります。

この手間をなんとかしたいのですが、現状できていません。(泣)

以上です!ご覧いただき、ありがとうございました!!

【Rails】PG::DuplicateTable: ERROR: relation “table_name” already exists の対処

rails開発中に PG::DuplicateTable: ERROR: relation “messages” already exists とエラーが出た時の対処です。私の場合は、試行錯誤していて、migrateを実行していたけれど、安易に $ git checkout -f をしたことで、次回のmigrateができなくなりました。

エラー内容

schema.rbを見るとmessagesテーブルが残っています。

対処法

messageテーブルを削除するためのマイグレーションファイルを作成します。

内容は以下のように、drop_table :messagesとします。

db/migrate/20181022050439_delete_messages.rb

これで $ rails db:migrate すると無事、解決しました!

以上です!! ご覧いただき、ありがとうございました!!

【Rails】db:migrate:statusで*** NO FILE ***と出た時の対処

マイグレーションファイルをrollbackせずに、削除してしまった時など、 マイグレーションのステータスに********** NO FILE **********と出てしまった時の対処です。

問題の箇所

Statusがupの状態で、ファイルが削除されて、NO FILEとなっています。

対処法

ステータスがupとなっているところをdownにしなければいけないので、そのためのマイグレーションファイルをdb/migrate配下に作成します。NO FILEとなっているマイグレーションIDのファイルが必要なので、20181021135030_dummy.rbとします。
内容は以下のような内容でOKです。Rails5からはmigration versioingが導入されていますので、それぞれのRailsのバージョンを指定します。

db/migrate/20181021135030_dummy.rb

この状態でもう一度、ステータスを見ると、作成したマイグレーションファイルが確認できます。

そして、次のコマンドでdownにします。(マイグレーションIDはご自身のものを指定)

ステータスを確認するとdownになっていますね。

あとは20181021135030_dummy.rbを削除すれば、OKです。

以上です!!
ご覧いただき、ありがとうございました!!

【Rails】has_many – belongs_toで都道府県データを持てるようにする

都道府県データを扱う方法は色々あるかと思いますが、本記事ではhas_many – belongs_toのリレーションで、Userが都道府県データを持てるように実装したいと思います。ちなみにgemライブラリで実装する場合はgem ‘jp_prefecture’があります。

マイグレーション

まずは、都道府県名を入れる、Prefectureモデルを作ります。

db/migrate/20xxxxx_create_prefectures.rb

Userがprefecture_idを持てるようにreferencesを追加します。

db/migrate/20xxxxxx_add_prefecture_ref_to_users.rb

$ rails db:migrateします。

リレーション

app/models/prefecture.rb

app/models/user.rb

seedデータ

seedデータの編集が簡単なseed-fuを使ってseedデータをいれていきます。

db/fixtures/prefecture.rb

$ rails db:seed_fuを実行します。

コントローラー

create/updateできるように、ユーザーのストロングパラメータに:prefecture_idを追加します。

app/controllers/users_controller.rb

ビュー

form内はcollection_selectでプルダウンメニューにします。

app/views/users/_form.html.erb

app/views/users/show.html.erb

カウント数を取得

一つのPrefectureが持っているUser数を取得するには、countメソッドを使います。

以上です!ご覧いただき、ありがとうございました!!😄

Railsアプリへ Google Analytics を導入する

今回は、Ruby on Railsで構築したWEBサイトをアクセス解析するために、Googleアナリティクスを導入する手順をノートに記しておきたいと思います。
Railsの場合はgoogle-analytics-railsというgemライブラリがあり、簡単に導入できます。

GitHub
https://github.com/bgarret/google-analytics-rails

Gemのインストール

Gemfileに以下を追加します。

Gemfile

$ bundle installでインストールします。

トラッキングIDの取得

Googleアカウントでログインして、https://marketingplatform.google.com/about/analytics/より、手順にしたがって、申し込みをすると、トラッキングIDが発行されます。

Railsの設定

production.rbに取得したトラッキングIDを追加します。

config/environments/production.rb

application.html.erbの、< head >タグ内に、<%= analytics_init if Rails.env.production? %>
を追加します。

app/views/layouts/application.html.erb

これでデプロイしたら完了です!

動作確認

あとは、自身でアクセスしてみて、「Google アナリティクス ホーム」ページや「リアルタイム」のレポートページなどで、リアルタイムのアクセス状況が反映されていればオッケーですね!
google analytics rails

以上となります!ご覧いただき、ありがとうございました!!😃

【Bootstrap】Jambotron(ジャンボトロン)の画像がRails本番環境で表示されない問題の対処

Rails開発でBootstrapのJambotronを使って、画像を配置したとき、開発環境では問題なく表示されましたが、Herokuで本番環境にpushして、確認をしてみると、うまく表示されていなかったので、そんな時の対処方法をメモいたします。

対処前の状態

views

画像はapp/assets/images/配下に置いています。

css

これで、開発環境では画像が表示されていました。

本番ではエラー

しかし、本番でも確認しようとHerokuにpushして、ブラウザを見てみると、画像が表示されていなかったので、$ heroku logs -tコマンドでログを確認してみると、、、

RoutingErrorが出ていました!

対処方法

image_urlというRailsメソッドで呼び出してやることで、本番環境でも、問題なく表示されるようになりました!

css

ログにもエラーは出なくなりました。

その他の解決方法としては、app/assetsではなくて、public/assetsに画像を配置するという方法があります。ですが、これではRailsの推進するAssetPipelineが適用されません。よって、AssetPipelineの仕組みを使って、よりブラウザからの読み込み速度を上げるためにはapp/assets/images ディレクトリに画像を置くことが良いと言えます。

以上です!
どなたかのお役に立てば幸いです!!

複数行対応のjQuery三点リーダ 「trunk8」をRailsアプリに組み込む

長いテキストやはみ出したテキストを「・・・」といった3点リーダに置き換える場合、1行であれば、CSSで事足りるのですが、複数行になると webkit-line-clamp で、できますが、IE(Internet Explorer)に対応してないので、jQueryのtrunk8というプラグインで対応しました。その他にも同様のプラグインがありましたが、ブラウザ幅の可変への対応など、個人的にはこちらが一番しっくりきましたので、Railsサイトにも導入してみました。

本家デモサイトはこちらです。
http://jrvis.com/trunk8/

Scaffoldでデモアプリを作ってみる

jQueryを使うためにこれらを読み込みます。

Gemfile

assets/javascripts/application.js

$ bundle install を実行します

サンプルデータを入れる

seed.rbに適当なデータを投入してみます。

db/seed.rb

$ rails db:seedを実行します

trunk8の導入

こちらのページからダウンロードしてtrunk8.jsというファイルをapp/assets/javascripts配下に配置します。

1箇所ならid指定でいいですが 動的に複数となるのでclassセレクタにして、該当箇所にあてます。

app/views/users/index.html.erb

オプションはlinesで行数を指定、tooltipは全文が隠れていてもツールチップで全文を表示してくれます。デフォルトでは true 担っています。「…」以外をあてたい場合は、fill: ”で指定します。デフォルトは’&hellip’です。
ブラウザ幅の可変対応には、window.onresizeイベントです。

jQuery

IE ではインライン要素に使った場合に、正常に動作しませんので、CSSなどでブロック要素にしておきましょう。

以上となります!!ご覧いただき、ありがとうございました!!😁

「本番環境でCarrierWaveでS3にアップロードした画像が表示されない問題」の対処

Rails + Heroku + CarrierWave + S3 で、画像をアップロードしても、本番環境では画像が正しく表示されなかったので、その対処した時のメモを残したいと思います。

アップロード自体の方法はこちらの記事をご覧ください。

エラー内容

ブラウザで見るとこのようになって、正常に表示されません。

Amazon S3の管理画面で確認すると、問題なくアップロードはされていました。

対処内容

原因はconfig/initializers/carrierwave.rb内の、urlの指定が間違っていたからでした。以下のように asset_hostのurlの指定を修正すると、無事にストレージから画像を取得できました。そもそも、fog_directoryだけでも、画像の表示はできるようなので、asset_hostの1行を削除しても、問題ありませんでした。

config/initializers/carrierwave.rb

以上です!どなたかの参考になれば幸いです!
ありがとうございました!☺️

Herokuへデプロイ時に「assets precompile error」$ npm install yarn で対処

Rails + webpacker で heroku へ push した時に、「assets:precompile」に関するエラーで失敗した時の対処メモです。

バージョンはこちらです

エラー

対処

こちらの記事を参考にして、 $ mpm install yarn -gコマンドを実行。npm 経由で yarn をインストールし直しました。

そして再度、プッシュ。

デプロイ成功しました!
以上です!😀

【Rails】paranoiaで論理削除を実装する

RailsのActiveRecordの削除(delete)は、通常、物理削除になっており、実際にデータがデータベースから削除されます。それに対して、論理削除は実際にはデータを削除せずに、削除されたと見なすフラッグと呼ばれるカラムを設定して、ユーザーには削除しているかのように振る舞い、必要時には元の状態に戻せるものです。「ユーザーが退会した後も、システム上一定期間はユーザーのデータを保持しなければならない。」や「違反等があり、一時的にアカウントを凍結したい」などの場合に、論理削除が使えると思います。
Railsではparanoiaというgemライブラリを利用することで簡単に実装することができます。このgemはacts_as_paranoidというgemを再実装したものです。

GitHub
https://github.com/rubysherpas/paranoia

実行環境はこちらです

Gemのインストール

Gemfile

$ bundle install します。

カラムの追加

論理削除したいモデルに deleted_atとindexカラムを追加します。

マイグレーションファイルは以下の通りです。

$ rails db:migrate を実行します。

モデル

対象モデルに acts_as_paranoid を追記します。

これでparanoiaの導入は完了です。

コンソールで試してみる

通常通りに destroy を実行すると、deleted_atにタイムスタンプが入り、物理削除ではなく論理削除になります。

再度、findしても論理削除されたデータは取得できません。

物理削除をしたい場合は really_destroy! を実行します。

削除したデータの確認

論理削除したデータのみ取得する場合です。

論理削除したデータとしていないデータを合わせて取得する場合です。

論理削除したデータを除いたデータ場合です。

論理削除から元に戻す

restoreを実行します。

論理削除カラム名の変更

デフォルトではdeleted_atが論理削除のカラム名として使われますが、別名にしたい場合はcolumnオプションで指定します。

デフォルトスコープをスキップしたい

論理削除は使いたいがデフォルトスコープはスキップしたいという場合です。

Callbacks

コールバックは以下のように、メソッドを呼ぶことができます。

以上です!
そのほか、追いきれていないところもありますので、ドキュメントも参考にしていただけたらと思います!

【Rails】awesome_printを使ってコンソールの出力をハイライトで見やすくする

Awesome Printとは

Rails consoleの出力を見やすく整形してくれるライブラリです。色付きで綺麗にインデントして表示され、配列であればインデックスも補ってくれます。

Github
https://github.com/awesome-print/awesome_print

同様のgemではHirbがあります。

awesome_print導入後はこのようになります。

rails awesome_print

Gemのインストール

Gemfileに追加し、$ bundle install します。

Gemfile

使い方

apを付ければ出力がawesome_print形式になります。

rails awesome_print

もしくは AwesomePrint.irb! と入力しても良いです。

rails awesome_print

.irbrcの設定

デフォルトで使用する場合には、ルートディレクトリに .irbrc を作成して、以下のように記述します。pryを使っている場合は.pryrcです。

.irbrc

以上です!

【Rails】Hirbを使ってコンソールの出力を表形式で分かりやすくする

Hirbとは

Rails consoleはデフォルトでモデルの内容を出力すると、ワンラインテキストとして出力されるので、データが多くなるにつれ、確認がしづらくなります。そこでHirbというgemを使うことで、出力結果を表形式に整形し、モデルの情報を確認しやすくしてくれます。

Github
https://github.com/cldwalker/hirb

Hirb導入前

コンソールからUser全件出力してみます。5件しかデータがないのに、非常に見づらいです。

Gemのインストール

Hirbのみのだと、日本語などのマルチバイト文字が入っている場合に出力結果にずれが出てしまうので、
同時にhirb-unicodeをインストールすることで対応可能となります。

Gemfile

$ bundle installを実行します。

Hirb導入後

まずはHirb.enableコマンドで有効にします。そして、User.allしてみると、表形式で出力されるので、各データの確認が容易になりました。

無効にする場合はHirb disableです。

.irbrcの設定

このままだと毎回 Hirb.enable と入力しなければ有効化されないので、 自動化したい場合は、ルートディレクトリに .irbrc を作成して、以下のように記述します。pryを使っている場合は.pryrcです。

.irbrc

以上です!これで開発が効率化できるかと思います!

ちなみに今回、サンプルデータはfakerを使って投入いたしました。

【Rails】letter_opener_webを使用して送信メールを確認する

rails action mailer letter_opener_web confirm

Ruby on Railsの開発環境で送信したメールをブラウザで確認するためにgem ‘letter_opener_web’を使ってみます。上の画像のようなページを簡単に導入できて、メールの確認ができます。本記事ではメール送信をdeviseのconfirmableモジュールを使用してsign_up時に行ってみました。

letter_opener_web
https://github.com/fgrehm/letter_opener_web
devise
https://github.com/plataformatec/devise

実行環境はこちらです

準備

新規アプリ作成し、scaffoldで足場を作っていきます。

Gemの追加

gemfileに以下のように追加します。

Gemfile

Devise

bundle installしてdeviseも導入します。

confirmableを追加することで、確認メールを送信できます。

app/models/user.rb

マイグレーションファイルの中の、Confirmable関連のコメントを外します。

db/migrate/20180928034759_add_devise_to_users.rb

Routeing

/letter_openerLetterOpenerWeb::Engineをマウントします。

Config

以下のようにデフォルトURL指定します。config.action_mailer.delivery_methodは:letter_opener_webに変更します。ちなみに開発環境がcloud9の場合は{ host: ‘myapp.c9users.io/’, port: $PORT, protocol: ‘https’ }とするとOKでした。

config/environments/development.rb

これで http://localhost:3000/users/sign_up からアカウントを作成し、送信されたメールを http://localhost:3000/letter_opener で確認することが出来るようになります!

以上です!ご覧いただき、ありがとうございました!!

【Rails】to_paramでURLをUser.nameにする

URLのidの部分にid以外のものを指定して、github.com/mynameのようにするために、to_paramメソッドがありましたので使ってみたいと思います。

Rails Document
http://railsdoc.com/references/to_param

Scaffoldで準備

Models

to_paramメソッドでuser.nameが入るようにします。バリデーションの設定は実際にはもっと必要かと思いますが割愛しております。

app/models/user.rb

Controllers

find_byでnameを取り出します

app/controllers/users_controller.rb

Routing

この書き方はrailsのDRYに反している気がしますが、routesが被ってないので動作は問題ありません。間違ってたら教えてください。
user.nameを入れたいroutesのpathは’/’だけにします。

config/routes.rb

routesの出力結果はこちらです。

以上で、/users/:idの部分にuser.nameが入るかと思います!

こちらにその他いろいろな書き方が紹介されています。
https://gist.github.com/agnellvj/1209733
friendly_idというgemを使って実装する記事はこちらです。
https://remonote.jp/rails-friendly-id-url

ご覧いただき、ありがとうございました!

【Rails】link_to do ~ end のブロックで囲い each で回す

画像やタイトルなどいろいろな要素を同時にリンクさせたいとき、link_toメソッドに do ~ end のブロックを渡し、それらを each で全件表示させたいときのメモです。

Controllers

コントローラーでArticleを全件表示します。

app/controllers/top_controller.rb

Views

each do ~ end で全件表示し、その中で link_to を書きますが、 そこに do ~ end のブロックを使います。これで link_to do ~ end の中の要素は同時にリンクできるようになりました。

app/views/top/index.html.erb

参考サイト
http://railsdoc.com/references/link_to

以上、link_toに関するメモでした!

【Rails】スキーマ(テーブル)情報を表示する gem ‘annotate’ を使う

Annotate(アノテート)とは”注釈”という意味で、Modelファイルにテーブルのスキーマ情報を注釈(コメント)で付加してくれるので、schema.rbを見に行く手間が省けたり、
routeingをroutes.rbに表示してくれるので、rails routeコマンドを打ち、出力を待つ必要がなくなりますので、ちょっとしたストレスがなくなります!

Annotate
https://github.com/ctran/annotate_models

annotateの導入

gemfileに記述して $ bundle install します。開発環境のみの使用なので、development group内に書いておきます。

Gemfile

annotateの実行

次のコマンドを実行すると、app/models/user.rb, test/models/user_test.rb, test/fixtures/users.ymlのファイルの行頭にモデルのスキーマ情報が追加されます。

ここでは app/models/user.rb のみ取り上げてみますと、以下のようになっています。テーブル(モデル)のカラム名や、カラムの型、制約等が記述されていますね。

app/models/user.rb

annotateでroutingの表示

config/routes.rb にコメントを追加することもできます。

config/routes.rb

annotateを削除する

削除したい場合のコマンドです。

annotateのデフォルト設定

$ rails g annotate:install すると $ rails db:migrate 時に自動的にannotateするためのtaskが lib/tasks/auto_annotate_models.rake 作られます。
annotateし忘れることもあるので、デフォルト設定は嬉しいです。

$ rails db:migrateしたときに自動でannotateしてほしくない場合は skip_on_db_migrate‘true’にします。

lib/tasks/auto_annotate_models.rake

その他オプションはこちらです。

annotateの導入は好みによると思いますが、ちょっとした手間が省けるので私はよく使っております。今回は以上です!ありがとうございました!

AWS Cloud9でRuby on Railsを始める

AWS Cloud9とは

AWS(Amazon Web Services) Cloud9はブラウザから使える、クラウド型の統合開発環境(IDE)です。クラウド上に開発環境を設けることによって、MacやWindowsなどのOSの違いに関わらず、共通の開発環境で開発を進められ、また開発環境の構築というハードルを一気にクリアして、素早くアプリケーション開発を開始できます。

Cloud9を使う上での注意点
・対応ブラウザが「Google Chrome」か「Firefox」だけなので、それ以外のブラウザをお使いの場合はGoogle Chromeをインストールしましょう。
・最初にクレジットカードの登録が必須となります。

AWS Cloud9 料金
AWS アカウントを作成すると、1年間は無料で利用できます。それ以降もAWS Cloud9自体には料金はかかりませんが Amazon EC2 インスタンスを使用する場合は、使用量に対して料金が発生します。以下のリンク内の「料金の例」にもあるように、1か月に90時間利用する場合でも、1.85ドル(約200円)の料金となります。自前のサーバーにSSH経由で接続する場合は料金はかかりません。
https://aws.amazon.com/jp/cloud9/pricing/

AWS Cloud9のセットアップ

それでは、AWS Cloud9を利用を開始するために、以下のリンクより「初めてのセットアップ」に進みましょう。すでにAWSアカウントを取得済みの場合は適宜スキップしてください。
https://aws.amazon.com/jp/cloud9/getting-started/

AWS アカウントを作成する

手順
1)「AWS アカウントを作成する」リンクをクリックします。
2)登録するメールアドレス、パスワード、確認用パスワード、アカウント名を入力します。
3)アカウントの種類「パーソナル」に変更して、必要記入情報を入力し、同意にチェックを入れます。
4)クレジットカード情報を入力します。
5)電話による確認フォーム画面でセキュリティチェックを入力します。
6)Amazonからの自動音声電話を取り、キーパッドで表示されている4桁の番号を入力します。
7)ベーシックプラン(無料)を選択します。
これで、AWS アカウント作成完了です。

AWS IAMユーザーを作成する

IAM(Identity and Access Management)はAWSのリソースへ安全にアクセスするためのユーザー設定です。

手順
1)画面右上の「コンソールへログイン」を選択します。
2)AWSアカウント情報を入力してログインします。
3)上部「サービス」メニューの「セキュリティ、アイデンティティ、コンプライアンス」項目の「IAM」をクリックします。
4)左メニューの「ユーザー」を選択します。
5)「ユーザーを追加」を押します。
6)ユーザー名を入力し、アクセスの種類の「プログラムによるアクセス」と「AWS マネジメントコンソールへのアクセス」にチェックを入れます。※コンソールのパスワードは任意で設定してください。
7)「グループの作成」を押します。
8)グループ名を入力して、検索から探し「AWSCloud9Administrator」と「AmazonEC2FullAccess」にチェックを入れて「グループの作成」を押します。
9)確認画面で「ユーザーの作成」を押して作成完了です。
※ここでパスワードを表示させてコピーをして控えておきます

10)作成完了画面に表示されているリンクをクリックして作成したユーザーで再ログインをします。
※自動生成パスワードにした場合はここで、新しいパスワードを設定。

AWS Cloud9 環境を作成する

手順
1)IAMユーザーでログインをします。
2)上部「サービス」メニューの「開発者用ツール」項目の「Colud9」をクリックします。
3)「Create environment」をクリックします。

4)Nameを入力してします。Descriptionは任意です。
5)「Configure settings」ではデフォルトのままNext Stepを選択します。
 ※「Environment type」を「Connect and run in remote server (SSH)」を選択して自前のサーバーに接続する場合は料金はかかりません。
6)最終確認画面で問題なければCreate environmentを選択します。
7)以下の画面が表示されたらColud9導入は完了です。

Cloud9でRailsアプリを起動する

さっそく、導入されたCloud9でRailsアプリを作成して、起動させてみましょう。すでにCloud9にはRubyやRailsはインストールされています。
それを確認するためにターミナルでruby -vrails -vと入力してみると、それぞれのバージョンが表示されるかと思います。
次にRailsアプリを作成するためにrails new アプリ名のコマンドを実行すると、必要なファイルが生成されます。

そして、cd アプリ名のコマンドで作成したアプリのディレクトリに移動して、rails serverでサーバーが起動します。

起動したアプリを確認するためには①上部にある「Preview」から「Preview Running Application」をクリックすると、右下にブラウザが表示され、②ここで新しいウィンドウで表示させるためのボタンをクリックします。

すると、、、

これで成功です!それでは楽しいRails開発ライフを!!

【Rails】Scaffoldの使い方

Ruby on Rails では scaffold(「足場」という意味)を利用することで、簡単にCRUD機能(Create, Read, Update, Delete)を組むことができ、ちょっとしたアプリのAPIが欲しい時などに活用すると、素早く足場が整います。

実行環境はこちらです

scaffoldコマンドの実行

以下は rails new で新規プロジェクトの作成からのコマンドラインです。

下記のurlで作成された画面にアクセスできます。
http://localhost:3000/users

上記の一連の流れをコマンド1発で実行したい場合

生成/変更されたファイルとそのディレクトリ

scaffoldコマンドで生成されるファイル、変更されたファイルのディレクトリは以下の通りです。もし、assetsやhelpers, testなどのファイルを生成しないようにするにはこちらの記事を参考にconfig.generatorsを設定してください。

生成されたルーティングの確認

config/routes.rbは、scaffoldコマンドによってresources :usersの一行が追加されました。

config/routes.rb

$ rails routes コマンドで生成されたルーティングの確認をしてみると、こちらも自動でCRUDを用意してくれるのがわかります。

scaffoldをやり直す

scaffoldをやり直す場合は同様のコマンドの”g”を”d”(destroyの省略)に変えて実行すればOKです。ただし、マイグレーションを実行した後であれば、rollbackでバージョンを戻してから実行します。

これで、generateによって作成/変更されたファイルは削除/元に戻すことができます。

ご覧いただいたように scaffoldを利用すると、Railsのレールに乗ってMVC(Model、View、Controller)のWebアプリケーションを素早く用意することができ、うまく使えば工数の削減になり、効率的な開発ができますね。

以上です!ありがとうございました!

【Rails】gem ‘gimei’ で日本語のダミーデータを生成する

gimei は、日本人の名前や、日本の住所のダミーデータを使えるライブラリです。同様のライブラリにfakerがありますが、ふりがな(フリガナ)には対応していません。gimei はふりがな(及びフリガナ)に対応しています。本記事ではdb/seeds.rbを編集して、seedデータとして、gimeiを使ってみます。

gimei
https://github.com/willnet/gimei

動作環境はこちらです

gemのインストール

Gemfile

$ bundle install します。

メソッドの確認

利用メソッドはこちらのリンクより確認できます。
https://github.com/willnet/gimei#user-content-使い方

コンソールから試してみます。

seeds.rbの編集

コンソールで試したように、Gimei.name.kanji, Gimei.name.hiragana と打つと値がバラバラになってしまうので、gimei = Gimei.new や gimei = Gimei.nameのようにインスタンスを作ってやれば同じ情報がとれます。

db/seeds.rb

seeds.rbファイルの実行

rails db:seed コマンドでデータ投入です。

viewで表示すると次のようになりました。

rails gem gimei japanese

以上です!

同様のライブラリのfakerの記事はこちらです。
https://remonote.jp/rails-gem-faker