Ale*_*rus 3 ruby-on-rails capistrano3
我有一个带有 Dotenv gem 的 Rails 4 应用程序,可以从文件中读取变量.env。
我设置了一些变量,以便为我的 rails 应用程序设置一个除“root”以外的 mysql 用户,例如:
MYSQL_ROOT_USER='rootuser'
MYSQL_ROOT_PASSWORD='rootpassword'
APP_DATABASE_USER='mydbuser'
APP_DATABASE_PASSWORD='userpassword'
Run Code Online (Sandbox Code Playgroud)
我还创建了一个 bash 脚本来在下面创建 mysql 用户 scripts/database_setup.bash
#!/bin/bash
source ../.env
# creates the user
mysql -u${MYSQL_ROOT_USER} --password="${MYSQL_ROOT_PASSWORD}" -e "CREATE USER '${APP_DATABASE_USER}'@'localhost' IDENTIFIED BY '${APP_DATABASE_PASSWORD}';"
# grants permission
mysql -u${MYSQL_ROOT_USER} --password="${MYSQL_ROOT_PASSWORD}" -e "GRANT ALL PRIVILEGES ON \`myapp\_%\`.* TO '${APP_DATABASE_USER}'@'localhost';"
Run Code Online (Sandbox Code Playgroud)
在服务器端,Capistrano 部署到`/home/myuser/apps/myapp/
我有三个问题:
.env文件的最佳位置在哪里?现在我把它放在/home/myuser/apps/myapp/目录中。如果有人对此仍有问题,以下是我.env使用 Capistrano 3.5+ 进行生产的方式:
在生产中添加您.env.production的/shared目录。然后,在部署脚本中,使用 Capistrano 的append命令从/shared目录中加载链接文件,如下所示:
append :linked_files, ".env.production"
Run Code Online (Sandbox Code Playgroud)
运行标准部署 ( cap production deploy)
您可以通过rails c p从/current目录内部以生产模式 ( )启动 rails 控制台来测试是否附加了环境变量。