厨师。如何在application_python 4.0 cookbook中设置/使用local_settings?

时间:2015-10-13 00:13:43

标签: django chef

我正在使用application_python v4.0食谱,大部分成功, 但是在local_settings一代中遇到了一些麻烦。

基本上,我想更改settings.py.erb的内容 正在使用中。

这是食谱的berkshelf来源地点:

.berkshelf /食谱/ application_python-4.0.0 /模板/ settings.py.erb

我在自己的食谱上添加了一个修改过的settings.py.erb,但确实如此 没有被拿起,默认的.berkshelf文件总是存在 使用

myrepo /食谱/ basedjango /模板/ settings.py.erb

然后我读了一下local_settings属性并认为我会 修改它以指向重命名的文件,而不是settings2.py.erb。最初,我的想法只是跟踪它将要搜索的模板目录。但是从未设法修改local_settings。

这些是我尝试的各种调整,导致错误 大多数情况。

# local_settings 'foo' do
#   source 'settings2.py.erb'
# end
#   resulting error => undefined method `local_settings' for PoiseApplicationPython::Resources::Django::Resource

# local_settings do
#   source 'settings2.py.erb'
# end
#   resulting error => undefined method `local_settings' for PoiseApplicationPython::Resources::Django::Resource

# local_settings 'settings2.py.erb'
#                     undefined method `local_settings' for PoiseApplicationPython::Resources::Django::Resource

# file 'local_settings' do
#   source 'settings2.py.erb'
# end

问题:为什么我自己的食谱模板没有被拿起和使用,而不是berkshelf版本?适用于其他烹饪书,而非此处。 如果做不到这一点,我该如何调整local_settings?

Chef Development Kit版本:0.7.0 chef-client版本:12.4.1 berks版本:3.2.4 厨房版:1.4.2

主持人mac osx guest ubuntu 14.04

1 个答案:

答案 0 :(得分:2)

正确的语法如下:

application "/var/www/myproj" do
  application_git do
    deploy_key repo_key
    repository repo_url
    revision repo_rev
  end
  virtualenv do
    path "/var/www/myproj/ve"
  end
  pip_requirements "/var/www/myproj/requirements/cpython2.txt"
  django do
    database "postgres://#{dbuser}:#{dbpassword}@#{dbserver}/#{dbname}"
    secret_key django_secret_key
    local_settings_source 'host_settings.py.erb'
    local_settings_options setting1: my_secret_1, setting2: my_secret_2
    local_settings_path "/var/www/myproj/settings/host_settings.py"
    migrate true
  end
end

应创建名为“host_settings.py.erb”的模板(在本例中),如下所示:

DEBUG = <%= PoisePython::Utils.to_python(@debug) %>

<%- unless @allowed_hosts.empty? -%>
ALLOWED_HOSTS = <%= PoisePython::Utils.to_python(@allowed_hosts) %>
<%- end -%>

# database connection information
DATABASES = <%= PoisePython::Utils.to_python(@databases) %>

# Django secret key
<%- if @secret_key -%>
SECRET_KEY = <%= PoisePython::Utils.to_python(@secret_key) %>
<%- end -%>

<%- if ! @setting1.to_s == '' -%>
# Setting #1
SECRET_1 = '<%= PoisePython::Utils.to_python(@setting1) %>'
<%- end -%>

<%- if ! @setting2.to_s == '' -%>
# Setting #2
SECRET_2 = '<%= PoisePython::Utils.to_python(@setting2) %>'
<%- end -%>

来源:https://github.com/poise/application_python/issues/59