gpt4 book ai didi

ruby-on-rails - Rails不会替换database.yml中的ENV值

转载 作者:行者123 更新时间:2023-12-02 20:48:15 27 4
gpt4 key购买 nike

我正在docker容器中运行Rails应用程序,但是当我访问时,该应用程序返回以下错误
enter image description here
当我运行命令

erb config/database.yml
环境变量被替换
docker 组成:
version: '3'
networks:
banco:
web:
fila:
services:
db:
image: postgres:9.6
env_file:
- './docker/.env.db'
networks:
- banco
app:
build: .
links:
- db
env_file:
- './docker/.env.web'
networks:
- banco
- web
- fila
depends_on:
- db
expose:
- "3000"
frontend:
image: nginx:1.13
volumes:
- ./docker/nginx/default:/etc/nginx/nginx.conf
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
ports:
- 8081:80
networks:
- web
depends_on:
- app
dockerfile:
FROM centos:7.4.1708
LABEL maintainer 'Blabla'

# Pre install
RUN yum -y install initscripts; \
yum clean all; \
yum -y update; \
yum -y install svn git git-svn telnet; \
yum -y install postgresql-devel gcc-c++ patch readline readline-devel zlib zlib-devel libcurl-devel ImageMagick ImageMagick-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison;

# Ferramentas uteis
RUN yum -y install bash-completion; \
yum -y install yum-plugin-priorities; \
yum -y install epel-release; \
yum -y install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm; \
yum -y install vim-enhanced; \
yum -y install htop;

RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
RUN \curl -L https://get.rvm.io | bash -s stable
RUN /bin/bash -l -c "rvm requirements"
RUN /bin/bash -l -c "rvm install 2.3"
RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc"

RUN mkdir /usr/app
WORKDIR /usr/app

COPY . /usr/app

RUN /bin/bash -l -c "bundle check || bundle install"

RUN /bin/bash -l -c "RAILS_ENV=production bundle exec rake generate_secret_token"

RUN /bin/bash -l -c "foreman export systemd /etc/systemd/system -u root -a redmine_visagio"

CMD ["/sbin/init"]
数据库
default: &default
adapter: postgresql
encoding: utf8
host: db
database: <%= ENV['DB_NAME'] %>
username: <%= ENV['DB_USER'] %>
password: <%= ENV['DB_PASSWORD'] %>

development:
<<: *default

test:
<<: *default

production:
<<: *default
nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
env DB_NAME;
env DB_USER;
env DB_PASSWORD;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
worker_connections 1024;
}

http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

include /etc/nginx/mime.types;
default_type application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
}
.env.db:
POSTGRES_DB=redmine
POSTGRES_USER=redmine
POSTGRES_USER_PASSWORD=some_password
.env.web:
DB_NAME=redmine
DB_USER=redmine
DB_PASSWORD=some_password
容器检查结果:
...
"Env": [
"DB_PASSWORD=redmine_db",
"DB_NAME=redmine",
"DB_USER=some_password",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NGINX_VERSION=1.13.7-1~stretch",
"NJS_VERSION=1.13.7.0.1.15-1~stretch"
],
...
我尝试使用 工头启动 rails的,但错误均以两种方式发生。当变量被实数值代替时,应用程序正常工作
任何的想法?谢谢!

最佳答案

这个问题是通过其他链接使用@ user155995的答案解决的:
rails database.yml not accepting ERB

I just experienced the same thing, and came across your post. I had been following a tutorial that had me create a puma.conf file that contained the code below:

ActiveRecord::Base.establish_connection( YAML.load_file( "#{app_dir}/config/database.yml" )[rails_env])

I modified to the following, and everything worked as expected:

require 'erb'
ActiveRecord::Base.establish_connection( YAML.load( ERB.new( File.read( "#{app_dir}/config/database.yml" )).result)[rails_env])


感谢@Pavel Oganesyan和@AndrewSwerlick

关于ruby-on-rails - Rails不会替换database.yml中的ENV值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47722386/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com