【11日目:外部プログラムの取り込みってなんや?】改訂3版基礎Ruby on Railsを読んだで!

シェアする

  • このエントリーをはてなブックマークに追加
41AkxXsz+5L._SX258_BO1,204,203,200_

外部プログラムの取り込み

requireメソッド

Rubyのソースコードが大きくなった時に複数のファイルに分割できる。

別のファイルにかかれたプログラムをソース中に取り込むときにrequireメソッドを使う。

自分で作った便利なクラスをmylibrary.rbとかに保存しておけばそれを取り込んで使える。

require “mylibrary” # ファイルの拡張子は省略できる。
Rubyには標準ライブラリというライブラリが付属している。
その機能を使う時もrequireメソッドを使う。

open-uriライブラリを使うとopenメソッドが拡張され、ウェブサイトの内容をファイルを読み込むように取得できる。

require "open-uri"

open("http://www.oiax.jp") do |f|
  f.each_line { |line| puts line }
end

requireに指定するファイルは現存のフォルダかRubyがファイルを探しに行くフォルダにないとダメ。

Rubyが検索するフォルダの場所は「puts $:」のようにグローバル変数$:を見ると良い。

「puts $:」でパスの確認できるってことやで。

Active Supportの日付と時刻

requireにメソッドを使うとGemパッケージのプログラムを取り込める。

Railsを構成するパッケージの1つActive Supportの機能を取り込んで見る場合は下記。

require "active_support/all"

Active Supportは数値クラスを拡張して時刻を扱えるようにしている。

2.days.agoの書き方で二日前の時刻を取り出せる。

例:1年前、10日前、1時間半後の時刻を取り出す

require "active_support/all"

puts 1.years.ago
puts 10.days.ago
puts (1.5).hours.from_now

また、Active SupportはTimeクラスも拡張している。

beginning_of_◯◯メソッドでその時刻の月の初め

next_◯◯メソッドやprev_◯◯メソッドで次の月や前の週を取り出せる。

例:今週の始めの時刻と翌月の一日目を表示

require "active_support/all"

now = Time.now
puts now.beginning_of_week
puts now.next_month.beginning_of_month

ちなみにRailsではActive Supportは自動的に読み込まれるので

requireを書かなくても便利なメソッドを利用できる。

前の日、次の日

yesterdayメソッドやtomorrowメソッドで前の日や次の日を取り出せる

puts Time.now.tomorrow.beginning_of_day # 明日の午前0時を取り出す

avanceメソッドに「days: 日数」を指定するとその日数だけ時刻を進めることができる。

「hours: 3」(三時間後)「days: -2」(2日前)のような指定もできる。

puts Time.now.beginning_of_day.advance(days: 3) # 3日後の午前0時を取り出す。

今日はここまでにしとくか。

本記事は下記本の勉強記事です。初学者にとても良い本です。

スポンサーリンク
Sponsored Link
Sponsored Link

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
Sponsored Link