雑記帳

ちょっとした文章とかメモ書きとか。

Exerb覚え書き

 

最近ちょっとしたツール作成にはRubyを使っています。

Rubyは便利だけど…

Rubyは便利なのですが、残念なことにWindowsでは新たにRubyインタプリタをインストールする手間が出てしまいます。そこで、インタプリタを同梱し、実行形式にしてしまうruby1.8.7互換のexerbを使ってみることにしました。
Windowsのみに関することなのでLinux、Macでは此の記事は関係ないです。

Exerbを使ってみる

Source Forge のExerbプロジェクトからExerbをダウンロードしてきて、

$sudo ruby setup.rb
>ruby setup.rb

でインストール出来ます。驚いたことに、Linuxで作成したexeがWindowsで実行出来てしまいました。

Exerbで作成した実行ファイルでのファイル読み込み

exerbで作成した実行ファイルの中には
ExerbRuntimeが定義されるようで、これを目印にexe化していないrubyスクリプトとそのままのrubyスクリプトで処理を分けることが出来ます。

では実際のスクリプトを書いてみたので処理を見てみましょう。

exerbtest.rb

#!usr/bin/ruby -Ku
#------------------------------------- 
#外部の設定ファイルからの読み込み 
#-------------------------------------
begin
 if defined? ExerbRuntime
    conf_path = File.expand_path("config.dat", File.dirname(ExerbRuntime.filepath))
    file = File.open(conf_path)
 else
    file = File.open("config.dat")
  end 
rescue
  puts "config.datがありません"
 #終了を待機
  puts "何かキーを押してください..."
  gets
 exit 
end
#config.datを読み込む。
begin
  elem = []
  while text = file.gets do
=begin 
exerbで実行ファイルにするときに 
require "rexml/document"がうまく行かないので配列に突っ込むことにした。 
なのでかなり間に合わせの処理
=end
    elem << text.chomp
 end 
rescue
  puts "config.datの読み込みに失敗しました"
  #終了を待機
  puts "何かキーを押してください..."
  gets
  exit
end
file.close

i = 0

for i in 0 .. elem.size do
  puts "#{elem[i]}"
end
#------------------------------- 
#結果書き込み 
#-------------------------------
begin  
 if defined? ExerbRuntime
    conf_path = File.expand_path("result.txt", File.dirname(ExerbRuntime.filepath))
    result = File.open(conf_path, 'w')
  else
    result = File.open("result.txt", 'w')
  end
  result.write "書き込みてすと"
rescue
  puts "result.txtが書き込めません"
end

#終了を待機
print "何かキーを押してください..."
gets

config.dat

<!--以下 数値読み込みサンプル-->
1
2
5
-1
7
-2

これを実行すると

$ ruby exerbtest.rb
<!--以下 数値読み込みサンプル-->
1
2
5
-1
7
-2

何かキーを押してください...

となります。

同じフォルダ内にutf-8エンコーディングのresult.txtが生成され、

「書き込みてすと」

と書かれていれば書き込みも成功です。

ExerbRutimeが定義されているときは
conf_path = File.expand_path(“(目的ファイル名)”, File.dirname(ExerbRuntime.filepath))

の部分のファイルパスを取得しています。ExerbRuntime.filepathで実行ファイルのパスが取得できるらしい?
それと、目的ファイル名とを結合させ、フルパスとして書き込みや、読み込みを行えば良いそうです。

あとは、Rubyのファイル操作の解説は他を当たって頂ければよろしいかと。

では。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。