初めに
gitlabのソースコードを暇なので見たいたところ結構controller内に
Gitlab::Utils.to_boolean
みたいなコードがあったりして何なのか調べてみた
lib以下にmoduleを書いている
どうやらlib以下にいろいろ書いていて
たとえば
lib/gitlab/utils.rb
がありその中身は
module Gitlab
module Utils
extend self
# Ensure that the relative path will not traverse outside the base directory
def check_path_traversal!(path)
raise StandardError.new("Invalid path") if path.start_with?("..#{File::SEPARATOR}") ||
path.include?("#{File::SEPARATOR}..#{File::SEPARATOR}") ||
path.end_with?("#{File::SEPARATOR}..")
path
end
以下略
みたいになっている
この中に書いたコードをcontroller内で
Gitlab::Utils.method
みたいな感じで予備足しているっポイ
いろんな場所で使うコードの場合このようにしておくと便利なのかも
試しに使ってみた
試しに使ってみた。
自分の場合20時を超えると機能が使えなくなることを想定して
現在の時刻が20未満ならtrue以上ならfalseをだつものを作ってみた
まずlib以下にtest_libフォルダ(アプリ名)を作ってその下にopening_hour.rbファイルを作成した。
そしてその中に
module TestLib
module OpeningHour
def self.check
time = Time.new
return false if time.hour > 20
return true
end
end
end
このようなコードを書いた。
これでOKではなく
lib/以下のファイルを読み込んでくれるようにするために
application.rbに
config.eager_load_paths.push(*%W[#{config.root}/lib])
config.autoload_paths = config.eager_load_paths.dup
これを加える
そしたら
rails cで試してみる
使い方は
TestLib::OpeningHour.check
みたいに呼び出す
rails c
irb(main):001:0> TestLib::OpeningHour.check
=> true
みたいな感じでうまくいく
おわり