日記帳

プログラミングのことをつぶやく日記です。

Rails初心者がもっと早く知りたかったこと

元記事は自分がQiitaであげた記事

qiita.com

Rails初心者がもっと早く知りたかったこと

スペック

・現PHPエンジニア(1年弱)

Railsエンジニア転向のため、TechAcademyのRails講座を1ヶ月受講

・現在Railsで個人開発中

・個人開発でわからないことが続出、調べながら何とか進めています。

タイムゾーン設定

APIを叩いて外部サービスの時刻を取得するのだが、日本のタイムゾーン(JST)ではなく、UTC(協定世界時)で取得するので、困った。 結論として、config/application.rbにタイムゾーンの設定を書く。

require_relative 'boot'

require "rails"
# Pick the frameworks you want:
require "active_model/railtie"
require "active_job/railtie"
require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "action_cable/engine"
require "sprockets/railtie"
Bundler.require(*Rails.groups)

module Typetalks
  class Application < Rails::Application
    config.time_zone = 'Tokyo'
  end
end

UTC => JSTに変換するときは、下記のよう"in_time_zone"関数を使う。

date = "2017-05-18T04:07:54Z"
p data                #2017-05-18T04:07:54Z
p data.in_time_zone   #Thu, 18 May 2017 13:07:54 JST +09:00

DBの初期化

開発環境でDBを初期化してやり直したい時がある。 そういうときは以下のコマンドを実行する。

$ rails db:reset
  1. 全てのテーブルを drop
  2. "db/schema.rb" を元にテーブルを再作成

ケースによってはmigrateファイルからテーブル作成を行いたい場合もあるだろう。 そのような場合は下記のコマンドを実行する。

$rails db:migrate:reset
  1. 全てのテーブルを drop
  2. "db/migrate/" 以下の全ての migration を実行してテーブルを再作成

requireするライブラリファイルの記述箇所

最初はcontrollerやmodelの先頭に書いていたが、何回も同じことを書くのは面倒なので、 config/initializers/stdlibs.rbで一括管理する。

require 'net/https'
require 'uri'
require 'json'
require 'time'

参考資料

RailsでDBをリセットして最初からつくり直す [俺の備忘録]