LoginSignup
0
0

More than 5 years have passed since last update.

初めに

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

みたいな感じでうまくいく

おわり:sunny:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0