Rails Прекомпиляция ресурсов для CI

Я столкнулся со странными ошибками, из-за которых мой первый тест Capybara/phantomjs всегда не удался, потому что настройки по умолчанию с config.assets.compile == true в первом тесте произойдет компиляция ресурсов, что приведет к тайм-ауту оценщика JS.

Поскольку увеличение времени ожидания накопителя Capybara не похоже на реальное решение, так как я использую CircleCI 2.0, я хотел бы воспользоваться преимуществами рабочих процессов, чтобы добавить rails assets:precompile на моих этапах сборки, так что предварительно скомпилированные ресурсы могут быть использованы в дальнейших работах (например, тесты rspec и cucumber/capybara)

Я пытался установить в моем config/environments/test.rb

config.assets.compile = (ENV['CI'] == 'true' ? false : true)

... и запустить RAILS_ENV=test rails assets:precompile в моей работе, но теперь я получаю странные ошибки No route matches [GET] "/images/ и т.д., что я не получал раньше. Я не совсем уверен, куда Rails помещает эти предварительно скомпилированные активы по сравнению с тем, кто мог бы пролить немного света?

мой config.yml (*defaults включить определения контейнера и переменные среды, такие как RAILS_ENV=test). Извините за linting, circleCI 2.0 использует модифицированный YAML...

jobs:
  build:
    <<: *defaults
    steps:
      - restore_cache:
          keys:
            - source-v1-{{ .Branch }}-{{ .Revision }}
            - source-v1-{{ .Branch }}-
            - source-v1-
      - checkout
      - save_cache:
          key: source-v1-{{ .Branch }}-{{ .Revision }}
          paths:
            - ".git"
      - restore_cache:
          key: workspace-bundle-{{ checksum "Gemfile.lock" }}
      - run:
          name: Bundle Install
          command: bundle install --path=vendor/bundle --jobs=4
      - save_cache:
          key: workspace-bundle-{{ checksum "Gemfile.lock" }}
          paths:
            - vendor/bundle
      - run:
          name: compile assets
          command: bundle exec rails assets:precompile
      - persist_to_workspace:
          root: ~/workspace
          paths:
            - ./*
  rspec:
    parallelism: 2
    <<: *defaults
    steps:
      - attach_workspace:
          at: ~/workspace
      - run: mkdir ~/rspec
      - run:
          name : run rspec tests
          command : >
            bundle exec rspec
            -r rspec_junit_formatter
            --format progress
            --format RspecJunitFormatter
            --out ~/rspec/junit.xml
            $(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings --timings-type=filename )
          when: always

      - store_test_results:
          path: ~/rspec
  cucumber:
    <<: *defaults
    steps:
      - attach_workspace:
          at: ~/workspace
      - run: mkdir ~/cucumber
      - run:
          name: run cucumber tests
          command: >
            bundle exec cucumber
            --format junit
            --retry 1
            --out ~/cucumber/junit.xml
          when: always
      - store_artifacts:
          path: ~/cucumber
      - store_test_results:
          path: ~/cucumber
workflows:
  version: 2
  workflows:
    jobs:
      - build
      - rspec:
          requires:
            - build
      - cucumber:
          requires:
            - build

В моем config/environments/test.rb файл, соответствующий конфиг включает в себя

# https://github.com/teampoltergeist/poltergeist/issues/677#issuecomment-222919584
config.assets.compile = (ENV['CI'] == 'true' ? false : true)
config.public_file_server.enabled = true

РЕДАКТИРОВАТЬ

При предварительной компиляции ресурсов, казалось бы, все ресурсы, включая изображения, попадают в public/assets/ тогда как Rails URL пытаются получить доступ /images/*где это пошло не так?

0 ответов

Другие вопросы по тегам