Ошибка при установке рекомендуется использовать gem — Не удалось создать собственное расширение gem (hired).h такого файла или каталога нет)

#ruby-on-rails #ruby #hiredis

Вопрос:

Я использую Windows 10 в этом проекте с версией ruby 2.6.5 и rails версии 6.0.2 с версией пакета 2.1.4.

Однако , если я попробую установить пакет в том числе gem 'recommendify' , это не удастся.

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

Вот мой файл с драгоценными камнями:

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

ruby '~> 2.6.5'

gem 'rails', '~> 6.0.2'
gem 'mysql2'
gem 'puma', '~> 3.11'
gem 'sass-rails', '~> 5.0'
gem 'webpacker', '~> 4.0'
gem 'coffee-rails', '~> 5.0.0' 
gem 'jquery-rails'
gem 'jbuilder', '~> 2.7'
gem 'sdoc', '~> 1.0', group: :doc
gem 'bootsnap', '>= 1.4.2', require: false

gem 'devise'
gem 'devise-two-factor'
gem 'rqrcode'
gem 'kaminari'
gem 'settingslogic'
gem 'paperclip'
gem 'rest-client', require: false

group :development, :test, :staging do
  gem 'pry-rails'  
  gem 'pry-doc'    
  gem 'pry-byebug' 
  gem 'pry-stack_explorer' 
end
gem 'ransack' 
gem 'active_link_to' 
gem 'gretel' 
gem 'whenever' 
gem 'meta-tags', '~> 2.11.1' 
gem 'just-datetime-picker'
gem 'jquery-ui-rails' 
gem 'kakurenbo-puti' 
gem 'jpmobile' 
gem 'slim-rails' 
gem 'html2slim' 
gem 'sitemap_generator' 
gem 'devise_invitable' 
gem 'font-awesome-rails' 

gem 'wicked_pdf' 
gem 'wkhtmltopdf-binary' if RUBY_PLATFORM =~ /darwin/
gem 'carrierwave', '~> 2.0'
gem 'draper' 

gem 'wkhtmltopdf-binary-edge-alpine', '~> 0.12.5.0' if RUBY_PLATFORM =~ /linux/
gem 'impressionist'
gem 'exception_notification'
gem 'slack-notifier'
gem 'redis', '~> 3.3.3' 
gem 'redis-namespace'
gem 'recommendify'
gem 'active_hash'
gem 'wareki'
gem 'tzinfo-data'
gem 'mimemagic', github: 'mimemagicrb/mimemagic', ref: '01f92d86d15d85cfd0f20dabd025dcbd36a8a60f'

group :development do
  gem 'ruby_dig', '~> 0.0.2'
end

gem 'kramdown'
gem 'remotipart' 
gem 'aws-sdk-s3', '~> 1'
gem 'nested_form'
gem 'enum_help'
gem 'i18n_generators' 
gem 'split', require: 'split/dashboard'

group :development, :test, :staging do
  gem 'byebug'
end

group :development, :staging do
  gem 'web-console', '~> 3.0'
end

group :production, :staging do
  gem 'fog-aws'
end

group :development do
  gem 'bullet'
  gem 'foreman', require: false 
  gem 'letter_opener'
  gem 'letter_opener_web'
  gem 'rubocop', require: false
  gem 'rubocop-airbnb'
  gem 'rails-erd'
  gem 'slim_lint'
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

group :development, :test do
  gem 'rspec-rails' 
  gem 'factory_bot_rails' 
  gem 'faker'                  
  gem 'spring-commands-rspec'  
end

group :test do
  gem 'database_cleaner'
  gem 'timecop'
  gem 'simplecov', '~> 0.21.2', require: false
  gem 'capybara'
  gem 'launchy'
  gem 'selenium-webdriver'
  gem 'webdrivers'
end
 

Вот где начинается ошибка:

 Using redis 3.3.5
Fetching recommendify 0.3.8
Installing recommendify 0.3.8 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: C:/Ruby26/lib/ruby/gems/2.6.0/gems/recommendify-0.3.8/ext
C:/Ruby26/bin/ruby.exe -I C:/Ruby26/lib/ruby/2.6.0 -r
./siteconf20210510-3880-ihgz9k.rb extconf.rb

current directory: C:/Ruby26/lib/ruby/gems/2.6.0/gems/recommendify-0.3.8/ext
make "DESTDIR=" clean
rm -f *.o

current directory: C:/Ruby26/lib/ruby/gems/2.6.0/gems/recommendify-0.3.8/ext
make "DESTDIR="
mkdir -p ../bin
gcc -Wall recommendify.c -lhiredis -o ../bin/recommendify
recommendify.c:4:10: fatal error: hiredis/hiredis.h: No such file or directory
    4 | #include <hiredis/hiredis.h>
      |          ^~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:4: build] Error 1

make failed, exit code 2

Gem files will remain installed in
C:/Ruby26/lib/ruby/gems/2.6.0/gems/recommendify-0.3.8 for inspection.
Results logged to
C:/Ruby26/lib/ruby/gems/2.6.0/extensions/x86-mingw32/2.6.0/recommendify-0.3.8/gem_make.out

An error occurred while installing recommendify (0.3.8), and Bundler cannot
continue.
Make sure that `gem install recommendify -v '0.3.8' --source
'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  recommendify
 

Заранее спасибо. Что-то новенькое для Руби.

Комментарии:

1. Пожалуйста, отредактируйте свой вопрос и добавьте любой код и журналы непосредственно в свой вопрос. Пожалуйста, не публикуйте скриншоты кода или журналов, так как их не могут прочитать многие люди, а также поисковые системы, и люди не могут скопировать код, чтобы попробовать что-то.

2. да, спасибо. извини за это. я здесь вроде как новичок. обновлю это сейчас.

Ответ №1:

Gem recommendify требует, чтобы клиент hiredis был установлен в системе (и его заголовки разработки), чтобы быть доступным. Видишь https://github.com/asmuth/recommendify/issues/8

https://github.com/JaneaSystems/hiredis-windows может быть полезной версией для Windows. Тем не менее, вы, возможно, найдете другие препятствия, которые заставят это работать в Windows. Возможно, здесь было бы проще использовать Linux или macOS, если это возможно.

В любом случае, похоже, что драгоценный камень recommendify не обновлялся в течение 8 лет и, следовательно, может иметь множество других несовместимостей с более новым программным обеспечением (таким как Redis, Ruby или другие драгоценные камни). Если возможно, вы можете изучить возможность обновления до другой поддерживаемой библиотеки, чтобы сгенерировать свои рекомендации.