web-dev-qa-db-fra.com

rails ne trouve pas de gemme de râteau

J'ai une application de base Rails exécutée dans Docker. Je peux la démarrer très bien et fournir des réponses. Je peux exécuter rake -T ça va. Mais je ne peux pas exécuter une commande Rails generate. Elle ne me dit pas Could not find rake-12.3.1 in any of the sources

$ docker-compose run main bundle exec Rails generate controller Welcome index
Starting cognitopoc_db_1 ... done
Could not find rake-12.3.1 in any of the sources
Run `bundle install` to install missing gems.

Voici mon bund env:

$ docker-compose run main bundle env 
Starting cognitopoc_db_1 ... done
## Environment

Bundler       1.16.1
  Platforms   Ruby, x86_64-linux
Ruby          2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
  Full Path   /usr/local/bin/Ruby
  Config Dir  /usr/local/etc
RubyGems      2.7.6
  Gem Home    /usr/local/bundle
  Gem Path    /root/.gem/Ruby/2.5.0:/usr/local/lib/Ruby/gems/2.5.0:/usr/local/bundle
  User Path   /root/.gem/Ruby/2.5.0
  Bin Dir     /usr/local/bundle/bin
Tools         
  Git         2.11.0
  RVM         not installed
  rbenv       not installed
  chruby      not installed

## Bundler Build Metadata

Built At          2017-12-21
Git SHA           0034ef341
Released Version  true

## Bundler settings

path
  Set for your local app (/usr/local/bundle/config): "vendor/cache"
  Set via BUNDLE_PATH: "/usr/local/bundle"
jobs
  Set for your local app (/usr/local/bundle/config): "4"
bin
  Set via BUNDLE_BIN: "/usr/local/bundle/bin"
silence_root_warning
  Set via BUNDLE_SILENCE_ROOT_WARNING: true
app_config
  Set via BUNDLE_APP_CONFIG: "/usr/local/bundle"
gemfile
  Set via BUNDLE_GEMFILE: "/myapp/Gemfile"

## Gemfile

### Gemfile

Ruby
source 'https://rubygems.org'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?('/')
  "https://github.com/#{repo_name}.git"
end

gem 'coffee-Rails', '~> 4.2'
gem 'jbuilder', '~> 2.5'
gem 'pg', '>= 0.18', '< 2.0'
gem 'puma', '~> 3.7'
gem 'Rails', '~> 5.1.6'
gem 'sass-Rails', '~> 5.0'
gem 'turbolinks', '~> 5'
gem 'uglifier', '>= 1.3.0'

# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'

# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

group :development, :test do
  gem 'byebug', platforms: %i[mri mingw x64_mingw]
  gem 'capybara', '~> 2.13'
  gem 'Selenium-webdriver'
end

group :development do
  gem 'listen', '>= 3.0.5', '< 3.2'

  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/Rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

### Gemfile.lock

GEM
  remote: https://rubygems.org/
  specs:
    actioncable (5.1.6)
      actionpack (= 5.1.6)
      nio4r (~> 2.0)
      websocket-driver (~> 0.6.1)
    actionmailer (5.1.6)
      actionpack (= 5.1.6)
      actionview (= 5.1.6)
      activejob (= 5.1.6)
      mail (~> 2.5, >= 2.5.4)
      Rails-dom-testing (~> 2.0)
    actionpack (5.1.6)
      actionview (= 5.1.6)
      activesupport (= 5.1.6)
      rack (~> 2.0)
      rack-test (>= 0.6.3)
      Rails-dom-testing (~> 2.0)
      Rails-html-sanitizer (~> 1.0, >= 1.0.2)
    actionview (5.1.6)
      activesupport (= 5.1.6)
      builder (~> 3.1)
      erubi (~> 1.4)
      Rails-dom-testing (~> 2.0)
      Rails-html-sanitizer (~> 1.0, >= 1.0.3)
    activejob (5.1.6)
      activesupport (= 5.1.6)
      globalid (>= 0.3.6)
    activemodel (5.1.6)
      activesupport (= 5.1.6)
    activerecord (5.1.6)
      activemodel (= 5.1.6)
      activesupport (= 5.1.6)
      arel (~> 8.0)
    activesupport (5.1.6)
      concurrent-Ruby (~> 1.0, >= 1.0.2)
      i18n (>= 0.7, < 2)
      minitest (~> 5.1)
      tzinfo (~> 1.1)
    addressable (2.5.2)
      public_suffix (>= 2.0.2, < 4.0)
    arel (8.0.0)
    builder (3.2.3)
    byebug (10.0.2)
    capybara (2.18.0)
      addressable
      mini_mime (>= 0.1.3)
      nokogiri (>= 1.3.3)
      rack (>= 1.0.0)
      rack-test (>= 0.5.4)
      xpath (>= 2.0, < 4.0)
    childprocess (0.9.0)
      ffi (~> 1.0, >= 1.0.11)
    coffee-Rails (4.2.2)
      coffee-script (>= 2.2.0)
      railties (>= 4.0.0)
    coffee-script (2.4.1)
      coffee-script-source
      execjs
    coffee-script-source (1.12.2)
    concurrent-Ruby (1.0.5)
    crass (1.0.3)
    erubi (1.7.1)
    execjs (2.7.0)
    ffi (1.9.23)
    globalid (0.4.1)
      activesupport (>= 4.2.0)
    i18n (1.0.0)
      concurrent-Ruby (~> 1.0)
    jbuilder (2.7.0)
      activesupport (>= 4.2.0)
      multi_json (>= 1.2)
    listen (3.1.5)
      rb-fsevent (~> 0.9, >= 0.9.4)
      rb-inotify (~> 0.9, >= 0.9.7)
      Ruby_dep (~> 1.2)
    loofah (2.2.2)
      crass (~> 1.0.2)
      nokogiri (>= 1.5.9)
    mail (2.7.0)
      mini_mime (>= 0.1.1)
    method_source (0.9.0)
    mini_mime (1.0.0)
    mini_portile2 (2.3.0)
    minitest (5.11.3)
    multi_json (1.13.1)
    nio4r (2.3.0)
    nokogiri (1.8.2)
      mini_portile2 (~> 2.3.0)
    pg (1.0.0)
    public_suffix (3.0.2)
    puma (3.11.3)
    rack (2.0.4)
    rack-test (1.0.0)
      rack (>= 1.0, < 3)
    Rails (5.1.6)
      actioncable (= 5.1.6)
      actionmailer (= 5.1.6)
      actionpack (= 5.1.6)
      actionview (= 5.1.6)
      activejob (= 5.1.6)
      activemodel (= 5.1.6)
      activerecord (= 5.1.6)
      activesupport (= 5.1.6)
      bundler (>= 1.3.0)
      railties (= 5.1.6)
      sprockets-Rails (>= 2.0.0)
    Rails-dom-testing (2.0.3)
      activesupport (>= 4.2.0)
      nokogiri (>= 1.6)
    Rails-html-sanitizer (1.0.4)
      loofah (~> 2.2, >= 2.2.2)
    railties (5.1.6)
      actionpack (= 5.1.6)
      activesupport (= 5.1.6)
      method_source
      rake (>= 0.8.7)
      thor (>= 0.18.1, < 2.0)
    rake (12.3.1)
    rb-fsevent (0.10.3)
    rb-inotify (0.9.10)
      ffi (>= 0.5.0, < 2)
    Ruby_dep (1.5.0)
    rubyzip (1.2.1)
    sass (3.5.6)
      sass-listen (~> 4.0.0)
    sass-listen (4.0.0)
      rb-fsevent (~> 0.9, >= 0.9.4)
      rb-inotify (~> 0.9, >= 0.9.7)
    sass-Rails (5.0.7)
      railties (>= 4.0.0, < 6)
      sass (~> 3.1)
      sprockets (>= 2.8, < 4.0)
      sprockets-Rails (>= 2.0, < 4.0)
      tilt (>= 1.1, < 3)
    Selenium-webdriver (3.11.0)
      childprocess (~> 0.5)
      rubyzip (~> 1.2)
    spring (2.0.2)
      activesupport (>= 4.2)
    spring-watcher-listen (2.0.1)
      listen (>= 2.7, < 4.0)
      spring (>= 1.2, < 3.0)
    sprockets (3.7.1)
      concurrent-Ruby (~> 1.0)
      rack (> 1, < 3)
    sprockets-Rails (3.2.1)
      actionpack (>= 4.0)
      activesupport (>= 4.0)
      sprockets (>= 3.0.0)
    thor (0.20.0)
    thread_safe (0.3.6)
    tilt (2.0.8)
    turbolinks (5.1.0)
      turbolinks-source (~> 5.1)
    turbolinks-source (5.1.0)
    tzinfo (1.2.5)
      thread_safe (~> 0.1)
    uglifier (4.1.8)
      execjs (>= 0.3.0, < 3)
    websocket-driver (0.6.5)
      websocket-extensions (>= 0.1.0)
    websocket-extensions (0.1.3)
    xpath (3.0.0)
      nokogiri (~> 1.8)

PLATFORMS
  Ruby

DEPENDENCIES
  byebug
  capybara (~> 2.13)
  coffee-Rails (~> 4.2)
  jbuilder (~> 2.5)
  listen (>= 3.0.5, < 3.2)
  pg (>= 0.18, < 2.0)
  puma (~> 3.7)
  Rails (~> 5.1.6)
  sass-Rails (~> 5.0)
  Selenium-webdriver
  spring
  spring-watcher-listen (~> 2.0.0)
  turbolinks (~> 5)
  uglifier (>= 1.3.0)

BUNDLED WITH
   1.16.1

et voici mon Gemfile:

source 'https://rubygems.org'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?('/')
  "https://github.com/#{repo_name}.git"
end

gem 'coffee-Rails', '~> 4.2'
gem 'jbuilder', '~> 2.5'
gem 'pg', '>= 0.18', '< 2.0'
gem 'puma', '~> 3.7'
gem 'Rails', '~> 5.1.6'
gem 'sass-Rails', '~> 5.0'
gem 'turbolinks', '~> 5'
gem 'uglifier', '>= 1.3.0'

group :development, :test do
  gem 'byebug', platforms: %i[mri mingw x64_mingw]
  gem 'capybara', '~> 2.13'
  gem 'Selenium-webdriver'
end

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

Voici le Dockerfile:

FROM Ruby:2.5

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update -qq \
  && apt-get install -y \
    apt-utils \
    build-essential \
    nodejs

RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile* /myapp/
RUN bundle install --path vendor/cache  --jobs=4

COPY . /myapp

CMD bundle exec Rails s -p 3000 -b '0.0.0.0'

et voici le fichier de composition:

version: '3'

services:

  db:
    image: postgres
    volumes:
      - ./pg_data:/var/lib/postgresql/data
  main:
    build: .
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

alors pourquoi pourrais-je exécuter rake -T bunt pas Rails generate?

16
kidbrax

J'ai commencé à obtenir cette erreur lorsque j'ai mis à niveau les conteneurs de pipeline Bitbucket pour utiliser le conteneur Ruby 2.5.1. Bien qu'il ne puisse pas répondre au cas d'utilisation de tout le monde, j'ai pu obtenir mon Rails (rake) commandes pour fonctionner en ajoutant ceci à mon bitbucket-pipelines.yml:

bundle install --binstubs
4
AndrewK

Il est intéressant de noter que quelques personnes ont commencé à obtenir cette même erreur à propos de la même version de Rake à peu près au même moment lors du regroupement dans Docker-compose. Je ne peux pas dire ce qui a causé cela, mais j'ai trouvé une solution qui fonctionne pour moi.

Vous pouvez essayer d'exécuter les commandes suivantes pour supprimer votre Gemfile.lock et .bundle répertoire et regroupement. J'ai eu cette idée dans cet article de blog: https://makandracards.com/makandra/1667-how-to-fix-gems-are-unavailable-al Bien-they-are-installed

$ docker-compose exec main bash
$ rm -rf .bundle/
$ rm Gemfile.lock
$ bundle install
$ Rails c # => This now works
2
kstevens715

Définir probablement BUNDLE_APP_CONFIG dans docker-compose.yml comme ci-dessous résout le problème.

environment:
  BUNDLE_APP_CONFIG: /myapp/.bundle

Après avoir suivi, exécutez bundle install encore.

0
Akihito Nakano