2017-06-11 7 views
0

私のルビースクリプトを実行中に以下の問題に直面しています。何か案は ?そのようなファイルを読み込むことができません - inifile(LoadError)Ruby

D:\my_ruby>ruby format.rb 

C:/Ruby24-x64/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require' 
    : cannot load such file -- inifile (LoadError) 
      from C:/Ruby24-x64/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55 
    :in `require' 

      from format.rb:2:in `<main>' 

Windows 7の64ビット

Rubyのバージョン - ルビー2.4.1p111(2017年3月22日リビジョン58053)のx64-MINGW32]

バンドラーバージョン1.15.1

GEM - v:2.6.11

私はbundle updateを実行しようとしましたが、それでも同じ問題が発生しました。

コード:私はルビー2.0からRubyの2.4にアップグレードするときに、同じ問題が私に起こった

require 'csv' 
require 'inifile' 

def transform_data(data) 
    groups = data.delete('groups').map do |k,v| 
    values = v.split(',').map(&:strip).map do |v| 
     v.gsub(/[\n\r\0\t]/) do |char| 
     case char 
     when "\0" then '\0' 
     when "\n" then '\n' 
     when "\r" then '\r' 
     when "\t" then '\t' 
     end 
     end 
    end 

    [k, values] 
    end.to_h 

    data.flat_map do |endpoint, attrs| 
    attrs.flat_map do |cluster, access_level| 
     c = cluster.gsub('@', '') 
     groups[c].map do |id| 
     { 
      cluster: c, 
      id: id, 
      case: endpoint, 
      access_level: access_level 
     } 
     end 
    end 
    end 
end 

records = File.read('input.txt').split(/(#.*\n|\*+\n)/).each_slice(4).flat_map do |r| 
    data = Hash.new { |h,k| h[k] = Hash.new } 
    IniFile::Parser.new(data, '=', ';#', 'global').parse r[2] 

    file_name = r[0][/(?<=\/)[^\/]*(?=-values\.txt)/] 

    transform_data(data).map { |d| { file_name: file_name }.merge(d) } 
end 

CSV.open('output.csv', 'wb') do |csv| 
    csv << records.first.keys 
    records.each do |hash| 
    csv << hash.values 
    end 
end 
+1

ソースコードをご覧になれますか? –

+0

@ Paul Coleman:私の質問にコードを追加しました。ありがとう。 – voltas

+0

どのように 'inifile'をインストールしましたか? – Gerry

答えて

1

。ただinifile gem:gem install inifileをインストールしてください。問題はなくなるはずです。

関連する問題