我可以通过查看Rails应用程序的文件来判断它是否使用数据库?

时间:2014-06-02 05:06:54

标签: ruby-on-rails git

我有一个进程,当我的git存储库从我的本地存储库中推送时,它会部署到我的实时应用程序。我这样做是使用更新后的挂钩(见下文)将更改提取到实时应用程序。

echo "Pulling changes into Live..."
cd /var/www/$name || exit
unset GIT_DIR
git pull origin master

exec git-update-server-info

# check if ruby app
if [ -f /var/www/$name/Gemfile ];
then
  echo "Ruby app detected..."
  bundle install --without development test
  bundle exec rake db:migrate # migrate database

  # check if database is used. If so, create database, database.yml, postgresql user and run db:setup
  # ...
fi

第一次拉动时,如果需要,我想设置数据库。我认为这是Heroku等提供商所做的,或者如果不是,他们必须在首次推送/创建项目时为新应用设置数据库。但我不知道如何从bash脚本中确定应用程序是否使用数据库。我只想通过检测config / database.yml的存在就足够了,但即使这个文件存在,也许这个应用程序不会使用数据库。另外,我在我的提交中不会包含database.yml文件,因此文件不会被拉(甚至从本地推送)。如果我检查/ app / models /中是否存在文件就足够了?或者是否有例如配置文件中的设置,指出应用程序是否使用数据库?我只想在更新后脚本检测到使用数据库时创建数据库。

3 个答案:

答案 0 :(得分:1)

查找database.yml或从ActiveRecord :: Base继承的任何模型。

答案 1 :(得分:0)

<强> Buildpacks

我不知道您是否已经这样做了,但您可以从Heroku's buildpacks收集信息

Heroku使用这些来确定您正在使用哪种类型的应用程序,并且是开源的(意味着您可以找到Ruby on Rails buildpack on Github;)

-

<强>移植

在发现应用是否使用数据库方面,您最好查看系统的migrations。这无论如何都不会防弹,但会确保应用程序设置了各种数据库选项以使其正常工作

我现在没有任何代码(如果你愿意,可以找到一些代码,但它将完全未经测试)

-

  

我提到Heroku,就像我在那里创建一个新项目或我创建时一样   初始推送,也创建了一个数据库

有趣的评论 - Heroku只在其服务器上创建数据库。创建纯数据库实例和填充数据之间存在差异。据我所知,Heroku使用任何数据填充您的数据库;意思是你的问题实际上是关于尝试设置硬件级别&#34;数据库用于您的应用。

答案 2 :(得分:0)

您可以查看db/migrate文件夹,看看是否有任何迁移。这通常需要db表。