スペック
・現PHPエンジニア(1年弱)
・Railsエンジニア転向のため、TechAcademyのRails講座を1ヶ月受講
・現在Railsで個人開発中
・個人開発でわからないことが続出、調べながら何とか進めています。
タイムゾーン設定
APIを叩いて外部サービスの時刻を取得するのだが、日本のタイムゾーン(JST)ではなく、UTC(協定世界時)で取得するので、困った。
結論として、config/application.rbにタイムゾーンの設定を書く。
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
config.time_zone = 'Tokyo'
と書くことで、RailsアプリケーションのタイムゾーンがTokyoになる。
UTC => JSTに変換するときは、in_time_zone
メソッドまたはzone
メソッドを使う。
irb(main):018:0> Time.now
=> 2017-10-18 03:21:01 +0000
irb(main):020:0> Time.now.in_time_zone
=> Wed, 18 Oct 2017 12:21:23 JST +09:00
irb(main):021:0> Time.zone.now
=> Wed, 18 Oct 2017 12:21:29 JST +09:00
DBの初期化
開発環境でDBを初期化してやり直したい時がある。
そういうときは以下のコマンドを実行する。
$ rails db:reset
- 全てのテーブルを drop
- "db/schema.rb" を元にテーブルを再作成
ケースによってはmigrateファイルからテーブル作成を行いたい場合もあるだろう。
そのような場合は下記のコマンドを実行する。
$ rails db:migrate:reset
- 全てのテーブルを drop
- "db/migrate/" 以下の全ての migration を実行してテーブルを再作成
requireするライブラリファイルの記述箇所
最初はcontrollerやmodelの先頭に書いていたが、何回も同じことを書くのは面倒なので、
config/initializers/stdlibs.rbで一括管理する。
config/initializers/stdlibs.rb
require 'net/https'
require 'uri'
require 'json'
require 'time'