@ksvdon

Постоянно натыкаюсь на «Bundler::GemNotFound», сначала это был rake затем concurrent-ruby, как преодолеть?

Итак. У меня есть среда для руби 2.2, я хочу получать элементарный "hello world" от руби/рельсы (для теста).
Для этого выполнил:
1. gem install rails io-console
2. rails new blog --force
3. Добавил в Gemfile:
bigdecimal
     execjs
     rake
     io-console

4. Раскомментировал gem 'therubyracer', platforms: :ruby в Gemfile
5. Выполнил bundle install
6. rake secret
7. добаивл то, что получил от 6 пунта в config/secrets.yml вместо "<%= ENV\[\"SECRET_KEY_BASE\"\] %>" в конце файла
8. Выполнил rails generate controller welcome index
при обращении curl(ом) к сайту - получал "welcome index" в ответ

короче вся эта кухня работала, но потом повидимому вышли какие-то обновления и всё сломалось к чертям.
Пока я ничего не менял в версиях Gemfile - получал такую ошибку:

App 23055 stderr: /home/kozh11/rubyvenv/app2/2.2/gems/bundler-1.15.3/lib/bundler/spec_set.rb:87:in `block in materialize': Could not find rake-12.0.0 in any of the sources (Bundler::GemNotFound)
App 23055 stderr: 	from /home/kozh11/rubyvenv/app2/2.2/gems/bundler-1.15.3/lib/bundler/spec_set.rb:81:in `map!'
App 23055 stderr: 	from /home/kozh11/rubyvenv/app2/2.2/gems/bundler-1.15.3/lib/bundler/spec_set.rb:81:in `materialize'
App 23055 stderr: 	from /home/kozh11/rubyvenv/app2/2.2/gems/bundler-1.15.3/lib/bundler/definition.rb:159:in `specs'
App 23055 stderr: 	from /home/kozh11/rubyvenv/app2/2.2/gems/bundler-1.15.3/lib/bundler/definition.rb:218:in `specs_for'
App 23055 stderr: 	from /home/kozh11/rubyvenv/app2/2.2/gems/bundler-1.15.3/lib/bundler/definition.rb:207:in `requested_specs'
App 23055 stderr: 	from /home/kozh11/rubyvenv/app2/2.2/gems/bundler-1.15.3/lib/bundler/runtime.rb:109:in `block in definition_method'
App 23055 stderr: 	from /home/kozh11/rubyvenv/app2/2.2/gems/bundler-1.15.3/lib/bundler/runtime.rb:21:in `setup'
App 23055 stderr: 	from /home/kozh11/rubyvenv/app2/2.2/gems/bundler-1.15.3/lib/bundler.rb:101:in `setup'
App 23055 stderr: 	from /home/kozh11/rubyvenv/app2/2.2/gems/bundler-1.15.3/lib/bundler/setup.rb:19:in `<top (required)>'
App 23055 stderr: 	from /opt/alt/ruby22/lib64/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
App 23055 stderr: 	from /opt/alt/ruby22/lib64/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'


походу стоял rake 10.4.2 и новый добавлялся 12.0.0 и между собой они не дружили. Старый 10.4.2 не удалить было ибо он дефолтный... Я решил попросту в Gemfile ограничить версию gem 'rake', '<= 10.4.2'
чтобы работало со старой - ок, эта ошибка ушла

[root@host151956 app2]# rake
Run options: --seed 1187

# Running:



Finished in 0.002200s, 0.0000 runs/s, 0.0000 assertions/s.
0 runs, 0 assertions, 0 failures, 0 errors, 0 skips


но теперь выскочила новая
App 29196 stderr: /home/kozh11/rubyvenv/app2/2.2/gems/bundler-1.15.3/lib/bundler/spec_set.rb:87:in `block in materialize': Could not find concurrent-ruby-1.0.5 in any of the sources (Bundler::GemNotFound)


короче одно цепляется за другое, явно какая-то фигня с зависимостями. Может можно порешать с новой версией "rake"? И проблема уйдет? Может кто-то сталкивался, подскажите пжлст, как быть то?
  • Вопрос задан
  • 1429 просмотров
Решения вопроса 1
@ksvdon Автор вопроса
В общем ситуация была такая. Рельсы обновились с 4.2.* до 5.1.3 (на данный момент).
Чтобы всё работало как раньше я использую руби 2.4.
В оболочке для приложения делаю так:

gem install rails -v 5.1.3
gem install io-console sqlite3 bigdecimal execjs rake concurrent-ruby
rails new ${ruby_app_name} --force


смотрю чтобы в Gemfile было:
'sqlite3'
'bigdecimal'
'execjs'
'rake'
'io-console'
'concurrent-ruby'

так же не забываем про
gem 'therubyracer', platforms: :ruby
иначе ругань на джава ( ps установить ноду пробовал, но вопрос не решило =( х3 почему)

теперь!!!!

bundle install --path vendor/cache
вместо bundle install ибо иначе проблема с 'concurrent-ruby' Bundler::GemNotFound
>>>cache - сволочь =)

не забываем про rake secret для production!!!
добавлял напрямую в */${ruby_app_name}/config/secrets.yml

ну и
rails generate controller welcome index
именно я получал на экран в качестве "hello world"

и ещё. Из логов продакшина стало ясно, что в конфиге
${ruby_app_name}/config/environments/production.rb
нужно чтобы было config.assets.compile = true
а не false как по дефолту

так же в конце добавляю в
${ruby_app_name}/config/routes.rb
строку:
root 'welcome#index'
ну т.е.
routes_link=/home/${ouruser}/${ruby_app_name}/config/routes.rb
sed -i '/get \x27welcome\x2Findex\x27/a\   root \x27welcome#index\x27' ${routes_link}


всё поднялось )
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vsuhachev
therubyracer это интерпретатор js для венды. Вы вроде в линуксе, поэтому вам проще убрать therubyracer из гемфайла и поставить ноду (как пакет в систему)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы