- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

Ruby

はじめに Edit

Rubyの require 使いこなしいろいろ

requireできない時に例外を起こさず処理する方法 Edit

1
2
3
4
begin
  require 'hoge'
rescue LoadError
end

requireできないのをrescueする時は、LoadErrorで明示してトラップしないといけません。

RubeGemsとかも考慮してrequireできないのを考慮する便利関数 Edit

こんな感じ。rspecで使う spec/spec_helper.rb を参考にしました。

普通にrequireしてみて、だめならgems経由でrequireします。
ignore_exception = true ならrequireが失敗しても無視します。
requireできたらtrueを返します。

require_utility.rb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
module Kernel
  ##
  # Do require with RubyGems utility
  # 
  # First, require_name does "require" normaly. 
  # If it failed, require_name does "require" with gems.
  # If ignore_exception is true, then ignore exception 
  # when it failed "require".
  # If it could "require", it return true.
  #
  # Example:
  #  require_gem('launchy')
  # 
  #  loaded_launchy = require_gem('launchy', true)
  #  if loaded_launchy
  #    puts "not loaded"
  def require_gem(require_name, ignore_exception = false)
    loaded = false
    begin
      require require_name
      loaded = true
    rescue LoadError
      begin
        require 'rubygems'
        require require_name
        loaded = true
      rescue LoadError => e
        raise e unless ignore_exception
      end
    end
    
    return loaded
  end
end

No comment. Comments/Ruby/requireできない時を考慮する方法?

Name:

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2008-10-04 Sat 02:09:46 JST (3667d)