Как создать приложение Rails 6 из среды Rails 5

Я играю с конвейером автоматизации микросервисов, который строит кучу шаблонного кода.

В настоящее время код конвейера автоматически запускается через guard и генерирует сценарий оболочки для создания баз данных, создания нового приложения rails и других типов ресурсов.

Я запускаю ruby ​​& rails в RbEnv, и скрипт, который я выполняю, отлично работает из командной строки, он создает новое приложение Rails 6.

Но когда я запускаю его из Guard, в котором уже есть приложение среды Rails 5.2, новое приложение создается как приложение Rails 5.2.

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

Когда я запускаю скрипт из командной строки:

echo 'SHOULD CREATE A RAILS APP using VERSION 6.0.0 on RUBY 2.6.3'

gem install rails -v 6.0.0

echo 'rails -v'
rails -v

echo 'rbenv local'
rbenv local

echo 'rbenv version'
rbenv version

echo 'rbenv versions'
rbenv versions

rails _6.0.0_ new . -d postgresql --force --skip-action-mailer --skip-action-mailbox --skip-action-text --skip-spring --skip-test --skip-bundle --skip-webpack-install

Я получаю следующий выходной журнал

Successfully installed rails-6.0.0
1 gem installed
SHOULD CREATE A RAILS APP using VERSION 6.0.0 on RUBY 2.6.3
rails -v
Rails 6.0.0
rbenv local
2.6.3
rbenv version
2.6.3 (set by /Users/myname/dev/myapp/.ruby-version)
rbenv versions
  system
  2.4.1
  2.4.6
  2.5.3
* 2.6.3 (set by /Users/myname/dev/myapp/.ruby-version)

Со следующим файлом GEM

ruby '2.6.3'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 6.0.0'
# Use postgresql as the database for Active Record
gem 'pg', '>= 0.18', '< 2.0'
# Use Puma as the app server

И подтверждение через последнюю строку, что приложение Rails 6

remove  config/initializers/new_framework_defaults
rails -v
Rails 5.2.3
rbenv local
rbenv: no local version configured for this directory
rbenv version
2.5.3 (set by RBENV_VERSION environment variable)
rbenv versions
  system
  2.4.1
  2.4.6
* 2.5.3 (set by RBENV_VERSION environment variable)
  2.6.3
0.rb

введите описание изображения здесь

Когда я запускаю один и тот же скрипт из Ruby, используя вариации в system и fork {exec {}}

    Dir.chdir File.dirname(output_file) do
      # fork { exec("bash #{output_file}") }
      system "bash #{output_file}"
      # system "/usr/local/bin/zsh #{output_file}"
    end

Я получаю Rails 5.2

rails -v
Rails 5.2.3
rbenv local
rbenv: no local version configured for this directory
rbenv version
2.5.3 (set by RBENV_VERSION environment variable)
rbenv versions
  system
  2.4.1
  2.4.6
* 2.5.3 (set by RBENV_VERSION environment variable)
  2.6.3

введите описание изображения здесь


person David Cruwys    schedule 14.09.2019    source источник
comment
Есть ли причина, по которой вы просто не используете шаблоны вместо запуска rails new?   -  person Josh Brody    schedule 14.09.2019
comment
Я планирую использовать шаблоны как часть этого процесса, но по-прежнему требуются новые направляющие с параметром -m path / template.rb. Я знаю, что он может подобрать правильный код, но мне любопытно, почему я не могу создать процесс с желаемой средой   -  person David Cruwys    schedule 14.09.2019


Ответы (1)


Я действительно не понимаю, почему вы хотите сделать это в Ruby, похоже, вы пытаетесь заново изобрести что-то вроде того, что docker или kubernetes уже решили довольно хорошо.

Но я подозреваю, что проблема с вашим скриптом в том, что в сеансе bash нет нужных вам заглушек rbenv. Я бы нашел, где они находятся на вашем компьютере или в файловой системе сервера, а затем укажу точные пути к ним при выполнении таких команд, как gem, rails или bundler.

person sevensidedmarble    schedule 14.09.2019