require 'csv'module Expertus class Dataset < Array attr_accessor :data_type, :udc_id, :filename_suffix# knows its common_udc_id and data type def initialize *args CSV::Converters[:non_octal_integer] = lambda { |f| begin e = f.encode(CSV::ConverterEncoding) unless e == "0" if e.starts_with? "0" return f end end rescue return f end Integer(f.encode(CSV::ConverterEncoding)) rescue f } CSV::Converters[:non_octal_float] = lambda { |f| begin e = f.encode(CSV::ConverterEncoding) unless e.starts_with? "0." if e.starts_with? "0" return f end end rescue return f end Float(f.encode(CSV::ConverterEncoding)) rescue f } CSV::Converters[:string_to_bool] =->(f) { ['true', 'false'].include?(f) ? f=='true' : f } @csv_options = {:converters => [:non_octal_integer, :non_octal_float, :string_to_bool]} @data_type = nil @udc_id = nil @filename_suffix = nil superenddef expected_output_filename return "#{@udc_id}_#{@data_type}#{@filename_suffix}.csv"enddef read_expected_output_file_from_directory! directory if directory.is_a? String p "Directory/File:::: #{File.join(directory, self.expected_output_filename)}" p "@csv_options::: #{@csv_options}" csv_data = CSV.read File.join(directory, self.expected_output_filename), @csv_options else csv_data = CSV.new(directory, @csv_options).read end csv_data[0].map! { |h| h.to_sym } self.clear self.replace csv_dataend
I am calling read_expected_output_file_from_directory method in my jRuby script like:
expected_dataset.read_expected_output_file_from_directory! File.join($session.script_dir, '..', 'expectedresults')
It is throwing an error:
["wrong number of arguments (given 2, expected 1) (ArgumentError)"]
/home/eip/jruby-9.4.5.0/lib/ruby/stdlib/csv.rb:1821:in `read'
Any help is appreciated ? Thanks