Rails:Helper方法在控制台和应用程序之间表现不同

时间:2018-05-27 18:39:36

标签: ruby-on-rails

我正在尝试编写一个辅助方法,可以从S3存储中下载CSV文件,读取文件的前几行,然后将前几行保存到新的本地文件中。

当我在rails控制台中包含帮助程序并调用对象上的方法时,一切正常,但是当通过控制器以完全相同的方式调用它时,本地文件包含S3文件中的所有行,而不仅仅是前几个。

我的代码,在帮助文件中(为了发布问题,我已将AWS凭据替换为注释):

def download_file(data_source)
  s3 = Aws::S3::Client.new(#API keys etc.)

  File.open(data_source.file.data['id'], 'wb') do |file|
    reap = s3.get_object({ bucket:#Bucket Name, key: 'store/' + data_source.file.data['id'] }, target: file)
  end
end

def reduce_csv(filename)
  data = CSV.open(filename, 'r') { |csv| csv.first(3) }
  csv_string = CSV.generate do |csv|
    data.each do |d|
      csv << d
    end
  end
  File.open('test.csv', 'wb') do |file|
    file << csv_string
  end
end

def make_small_data_source(data_source)
  download_file(data_source)
  reduce_csv(data_source.file.data['id'])
end

在控制器中:

if @data_source.save
  make_small_data_source(@data_source)

任何想法都会非常感激!

0 个答案:

没有答案