繁体   English   中英

Rails卡在开发模式中

[英]Rails stuck in development mode

我正在与Passenger一起部署Rails应用程序,而当我运行此命令以准备好应用程序并准备投入生产时,我会收到此yarn消息,但未运行其他操作。

bundle exec rake assets:precompile db:migrate RAILS_ENV=production

该命令的输出:

yarn install v1.3.2
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
info Lockfile not saved, no dependencies.
Done in 0.04s.

运行完成后,我跳入Rails控制台并运行Rails.env ,结果是开发。 我已经删除并重新安装了Yarn,但这不是运气。 没有Yarn依赖,所以我一开始就对为什么需要它感到困惑。 如果我在未安装Yarn的情况下运行bundle exec命令,则会收到以下消息:

Yarn executable was not detected in the system.
Download Yarn at https://yarnpkg.com/en/docs/install

有人知道如何在未安装Yarn的情况下绕过此设置或将其设置为生产模式吗?

我也尝试过跑步:

RAILS_ENV=production rake assets:precompile

但是,请输入以下内容:

/var/www/isharelessons/code/vendor/bundle/ruby/2.3.0/gems/rake-12.3.0/lib/rake/file_utils.rb:10: warning: already initialized constant FileUtils::RUBY
/var/lib/gems/2.3.0/gems/rake-12.3.0/lib/rake/file_utils.rb:10: warning: previous definition of RUBY was here
/var/www/isharelessons/code/vendor/bundle/ruby/2.3.0/gems/rake-12.3.0/lib/rake/file_utils.rb:109: warning: already initialized constant FileUtils::LN_SUPPORTED
/var/lib/gems/2.3.0/gems/rake-12.3.0/lib/rake/file_utils.rb:109: warning: previous definition of LN_SUPPORTED was here
/var/www/isharelessons/code/vendor/bundle/ruby/2.3.0/gems/rake-12.3.0/lib/rake/file_utils_ext.rb:17: warning: already initialized constant Rake::FileUtilsExt::DEFAULT
/var/lib/gems/2.3.0/gems/rake-12.3.0/lib/rake/file_utils_ext.rb:17: warning: previous definition of DEFAULT was here
WARNING: Possible conflict with Rake extension: String#ext already exists
WARNING: Possible conflict with Rake extension: String#pathmap already exists
[....]

当您运行类似的命令时

bundle exec rake assets:precompile db:migrate RAILS_ENV=production

执行这些命令时,它将使用生产环境,但不会使您超出该单个rake命令的持续时间。 如果你再跑

$ rails c
2.4.2 :001 > Rails.env
 => "development"

它显示的是development ,因为RAILS_ENV为空,并且为空时,默认环境为development。

当您在rake命令的末尾在命令行上指定环境时,它不会更改shell的环境; 它只是rake命令的一个参数,不会以任何方式持久存在。

同样,当您在命令前加上环境前缀时,例如

RAILS_ENV=production rake assets:precompile

它不会在单个命令之后继续存在。 这是一个临时变量分配。 这确实会更改shell变量,但仅在该命令行的持续时间内,并且也不会更改未来命令的环境。

如果要为shell会话设置环境,以使其影响以后的所有命令(直到注销或启动新的shell),则必须导出变量:

$ export RAILS_ENV=production
$ rails c
2.4.2 :001 > Rails.env
 => "production"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM