【问题标题】:axlsx / axlsx_rails dependancy / conflict issuesaxlsx / axlsx_rails 依赖/冲突问题
【发布时间】:2016-06-25 05:12:51
【问题描述】:

我正在尝试使用 https://github.com/randym/axlsxhttps://github.com/straydogstudio/axlsx_rails 将简单的 Excel 文件下载添加到我的 Rails 应用程序,但我似乎无法理清依赖关系。

这是我开始使用我的 gem 文件的地方:

gem 'zip-zip'
gem 'axlsx'
gem 'axlsx_rails'
gem 'activeadmin-axlsx'

还有一个简单的索引模板:

wb = xlsx_package.workbook
wb.add_worksheet(name: "Areas") do |sheet|
  @areas.each do |area|
    sheet.add_row [area.name, area.user_id]
  end
end

抛出这个:

NoMethodError - undefined method `reopen' for "streamed":String:
  rubyzip (1.2.0) lib/zip/output_stream.rb:32:in `initialize'
  axlsx (1.3.6) lib/axlsx/package.rb:113:in `to_stream'
  app/views/areas/index.xlsx.axlsx:8:in `_app_views_areas_index_xlsx_axlsx___113759396792702403_70279795626520'

这个问题似乎试图解决它:

https://github.com/straydogstudio/axlsx_rails/issues/18

它专注于 axlsx gem 的 v2.x,我似乎也无法加载尝试这个:

gem 'zip-zip'
gem 'axlsx', '2.1.0.pre'
gem 'axlsx_rails', '>=0.4' 
gem 'activeadmin-axlsx'

但这会破坏 active_admin_import:

Bundler could not find compatible versions for gem "rubyzip":
  In Gemfile:
    active_admin_import (>= 0) ruby depends on
      rubyzip (~> 1.2) ruby

    axlsx (= 2.1.0.pre) ruby depends on
      rubyzip (~> 1.1.7) ruby

我不明白,好像我读过这篇文章他们都应该可以使用 ruby​​zip 的 v1.2。

它也打破了activeadmin-axlsx

      # patching the index method to allow the xlsx format.
      def index_with_xlsx(options={}, &block)
        index_without_xlsx(options) do |format|  ### wrong number of arguments (1 for 0)
           format.xlsx do
            xlsx = active_admin_config.xlsx_builder.serialize(collection)
            send_data xlsx.to_stream.read, :filename => "#{xlsx_filename}", :type => Mime::Type.lookup_by_extension(:xlsx)
          end
        end

如果我禁用 active_admin_import axlsx 效果很好,但这很糟糕,因为我失去了流畅的管理员导入。

降级似乎可行,但这似乎不是一个长期的解决方案:

gem 'active_admin_import', '2.1.2'

这里有什么想法或建议吗?

【问题讨论】:

  • 您可以尝试分叉 axlsx 存储库,更改其依赖项,并指向您自己的 github。我很确定它并不真正关心 ruby​​zip 1.1 与 1.2。但你必须找出答案。然后 Axlsx_rails 可能会给依赖带来麻烦,但可能不会。不幸的是,axlsx 的开发在过去一年左右停滞不前,尽管它仍然是一个有用的宝石。

标签: ruby-on-rails activeadmin axlsx


【解决方案1】:

Rails 5.2.1 / ruby​​ 2.5.0的工作组合:

gem 'rubyzip', '>= 1.2.1' gem 'axlsx', git: 'https://github.com/randym/axlsx.git', ref: 'c8ac844' gem 'axlsx_rails' gem 'zip-zip'

【讨论】:

    【解决方案2】:

    我看到了同样的错误, NoMethodError - undefined method 'reopen' for "streamed":String: 虽然我没有 active_admin_import 依赖项,但 https://github.com/straydogstudio/axlsx_rails/issues/18#issuecomment-162934108 中描述的 gem 版本选择解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 2011-03-12
      • 2019-12-24
      • 2021-12-14
      • 2022-01-24
      • 2021-12-03
      相关资源
      最近更新 更多