進撃のまたぞー

佐賀在住のアラサーです。プログラミング学習で学んだことを発信していきます。

Railsのタイムゾーンの初期設定を変更する方法

初期設定の確認

まずは初期設定がどうなっているかコンソールで確認してみます。

Image from Gyazo

初期設定はUTCとなっていることが分かります。

  • UTC とは?
    簡単に言うと世界標準の時間です。ちなみに日本時間はJSTです。

変更するには?

Railsガイドを見ると、config.time_zone = <任意の標準時間>で設定してあげるといいみたいです。

<任意の標準時間>はこちらで探してください。

JAPANでは見つけれないので、TOKYOで探してみると

Image from Gyazo

3つ見つかりました!! どれかお好きなのを選んでください。

それではconfig/application.rbに設定します。

config/application.rb

require_relative 'boot'
・・・
module Product
  class Application < Rails::Application
    config.load_defaults 5.2

    config.generators.system_tests = nil

    config.time_zone = "Tokyo" # <= 追加
  end
end

更にactive_recordへの保存する際のタイムゾーンも変更するには以下追加します。

config.active_record.default_timezone = :local
# デフォルトはUTCです!!
config/application.rb

require_relative 'boot'
・・・
module Product
  class Application < Rails::Application
    config.load_defaults 5.2

    config.generators.system_tests = nil

    config.time_zone = "Tokyo"
    config.active_record.default_timezone = :local # <= 追加
  end
end

それではコンソールで確認してみましょう。

Image from Gyazo

Tokyoに変更されているのが確認できます!!

gem Draperを初めて使用したので振り返り

  • はじめに
  • Draperとは?
    • Decoratorとは?
  • 導入方法
  • helperにアクセスする場合
  • Modelにアクセスする場合
    • delegate_allが宣言されている場合
  • オブジェクトをDecorateする方法
  • 参考

はじめに

今回、初めてDraperを使用したのでまとめとして書いています。

Draperとは?

ざっくりいうとDecoratorを導入するのに便利なgemです。

Decoratorとは?

こちらの記事が凄く分かりやすかったです。

Decorator と Presenter を使い分けて、 Rails を ViewModel ですっきりさせよう - KitchHike Tech Blog

Decoratorの役割とDraperについて - Qiita

続きを読む

Railsに国際化(i18n)を導入したので振り返り

  • はじめに
    • I18n APIで最も重要なメソッド
  • 日本語訳してみる
    • config/application.jsの設定
    • Active Recordモデルで翻訳を行う。
    • viewテンプレートに対して翻訳を行なう
      • lazy lookup
  • テンプレートをダウンロードする
  • 参考

はじめに

Railsでは、言語の文字列に対して翻訳済みの値を定義することでローカライズを行います。

RailsではI18nモジュールがあり、この中のメソッドを利用するのが一般的です。

続きを読む

gemとは ?

  • gemとは?
    • gemを探す為のサイト
  • コマンド一覧
    • gemをインストールする
    • gemをアンインストールする
    • インストールしているgemの一覧を表示
    • gemが最新版か確認する
    • gemを最新版に更新する
    • gemの古いバージョンをまとめて削除する

gemとは?

Rubyのライブラリ(便利な機能をまとめたもの)をgemと言います。
rails,bundlerもgemの一種です。

続きを読む

Rails generate コマンドで生成するファイルを限定する方法

  • はじめに
  • デフォルトで生成されるファイル(controllerの場合)
  • config/application.rbに設定を追加する

はじめに

rails g コマンドを使用すると、新しくコントローラーやモデルを作成することができ、それに付随して色々なもの(erb,view,helper)を作成してくれます。
その際、「不要なファイルは予め生成して欲しくないな〜。」って時の解決法です。

続きを読む

slice , slice!について

sliceメソッド

文字列、配列に対して使用することで、任意の文字列や配列の要素を取り出すことができます。

irb
> x = "hogefoobar"
> x.slice(3)
=> "e"            #<= 引数のindexは0から始まるので注意!!

> x.slice(10)
=> nil            # <= 無い場合はnilを返す
 
> x.slice(5, 3)
=> "oob"          # <= 第2引数を指定すると、第一引数から何文字を取り出すかを指定できる。

> x.slice(2..-1)
=> "gefoobar"     # <= rangeでの指定も可能

又、文字列に対しても配列と同様に[ ]を使用できます。

irb

> x = "hogefoobar"
> x[4,7]
=> "foobar"

x[4..7]
=> "foob"

slice!メソッド

slice!は与えられたオブジェクトから返したオブジェクトを取り除きます。

irb

> x = ("a".."g").to_a
> p x
=> ["a", "b", "c", "d", "e", "f", "g"]

#sliceの場合
> x.slice(2..5)
=> ["c", "d", "e", "f"]
> p x
=> ["a", "b", "c", "d", "e", "f", "g"]  # <=変わらない!!

#slice!の場合
> x.slice!(2..5)
=> ["c", "d", "e", "f"]
> p x
=> ["a", "b", "g"]  # <= 取り除かれる!!