Проблема с запуском 'rails s' после добавления gem docx_converter - PullRequest
0 голосов
/ 06 мая 2019

TL; DR:

Я должен был использовать камень docx, а не (старый) docx_converter.Это кажется намного более совместимым с Rails 5.2.


Я изучаю рельсы и у меня есть рабочее приложение.Однако, когда я добавляю gem docx_converter в свой Gemfile (чтобы я мог конвертировать файлы Word в уценку для дальнейшей работы), сервер не запускается.

Приложение имеет три модели: Company, которая has_many Users,Который имеет_ многие проекты.(Пользователи контролируются Devise, а компания has_many осуществляет проекты через пользователей.) Когда пользователь создает проект, он может загрузить файл в этот проект с помощью active_storage, и он будет сохранен на диске в моей среде разработки (и это меня беспокоит).с здесь).

У меня нет проблем с любым из вышеперечисленного - я могу создавать пользователей и проекты, а также добавлять и удалять файлы из проектов.

Однако, если я добавлю gem 'docx_converter'в мой Gemfile и запустить bundle update, я больше не могу запустить сервер rails.Непосредственно перед этим действием все в порядке.Сразу после этого сервер не запустится и трассировка (последние несколько строк) будет:

    10: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
     9: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/docx_converter-1.0.0/lib/docx_converter.rb:18:in `<main>'
     8: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
     7: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'
     6: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `block in require'
     5: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:26:in `require'
     4: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:40:in `rescue in require'
     3: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
     2: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/loaded_features_index.rb:89:in `register'
     1: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
/Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require': cannot load such file -- publishr (LoadError)

Учитывая ссылки на bootsnap, я попытался удалить это из Gemfile и config / boot.rb, но этопривел к той же ошибке в другом месте, но примерно так же (publishr):

    10: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/runtime.rb:65:in `require'
     9: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/runtime.rb:65:in `each'
     8: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/runtime.rb:76:in `block in require'
     7: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/runtime.rb:76:in `each'
     6: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/runtime.rb:81:in `block (2 levels) in require'
     5: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/runtime.rb:81:in `require'
     4: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/docx_converter-1.0.0/lib/docx_converter.rb:18:in `<top (required)>'
     3: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
     2: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'
     1: from /Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `block in require'
/Users/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require': cannot load such file -- publishr (LoadError)

Я пытался установить publishr через "gem install publishr", но это не помогло.

Мой Gemfile:

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.6.2'

gem 'rails', '~> 5.2.3'
gem 'puma', '~> 3.11'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5'
gem 'bcrypt', '~> 3.1.7'
gem 'bootsnap', '>= 1.1.0', require: false

# Manually added gems
gem 'will_paginate', '~> 3.1.6'
gem 'devise', '~> 4.6.2'
gem 'cancancan', '~>3.0.1'
gem 'docx_converter', '~>1.0.0'

group :development, :test do
  gem 'sqlite3'
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'faker', '~> 1.7.3'
end

group :development do
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '>= 3.0.5', '< 3.2'
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

Кажется, есть проблема с этим гемом и Rails 5.2.3, но кто-нибудь знает, что здесь происходит и как я мог заставить его работать?(Или другой камень для преобразования файла Word docx во что-то пригодное для использования)

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

После определенного количества погружений в кроличьи норы я обнаружил, что для работы docx_converter необходимо явно указать два дополнительных драгоценных камня, а также заблокировать версию одного из них.

gem 'publishr'
gem 'rubyzip', '~>0.9.9'
gem 'docx_converter', '~>1.0.0'

Я еще не полностью протестировал функциональность, но по крайней мере сервер теперь запускается! Спасибо всем за предложения!

Редактировать

Даже после запуска сервера у меня были проблемы с этим гемом - как сказал @engineersmnky, он довольно старый и плохо документирован. Итак, я переключился на docx gem , который не пытается сделать так много, но, похоже, (а) загружается без проблем на Rails 5.2 и (б) работает!

0 голосов
/ 06 мая 2019

bootsnap может сыграть роль во всем этом, так как это портит запуск Rails.Убедитесь, что все пружинные процессы очищены ps -ef | grep spring.Удалите bootsnap драгоценный камень и bundle install.Затем попробуйте снова запустить сервер rails s.

...