有没有办法让我的en.yml文件包含一个常量?
# en.yml
foo:
bar:
I love BAZ so much!
# initializers/constants.rb
BAZ = "stackoverflow.com"
I18n.t("foo.bar")
-> "I love stackoverflow.com so much!"
Run Code Online (Sandbox Code Playgroud)
?
如果没有,有没有办法自我引用yaml文件?
foo:
bar:
I love *baz* so much!
baz:
stackoverflow.com
I18n.t("foo.bar")
-> "I love stackoverflow.com so much!"
Run Code Online (Sandbox Code Playgroud) 我有一个YAML文件(all.yaml),如下所示:
...
var1: val1
var2: val2
var3: {{var1}}-{{var2}}.txt
...
Run Code Online (Sandbox Code Playgroud)
如果我像这样在Python中加载它:
import yaml
f = open('all.yaml')
dataMap = yaml.safe_load(f)
f.close()
print(dataMap["var3"])
Run Code Online (Sandbox Code Playgroud)
输出{{var1}}-{{var2}}.txt而不是val1-val2.txt.
是否可以用值替换嵌套变量?
我试着加载它:
import jinja2
templateLoader = jinja2.FileSystemLoader( searchpath="/path/to/dir" )
templateEnv = jinja2.Environment( loader=templateLoader )
TEMPLATE_FILE = "all.yaml"
template = templateEnv.get_template( TEMPLATE_FILE )
Run Code Online (Sandbox Code Playgroud)
不再抛出异常,现在我陷入困境,必须研究如何继续.
说我有一个yaml配置文件,例如:
test1:
minVolt: -1
maxVolt: 1
test2:
curr: 5
volt: 5
Run Code Online (Sandbox Code Playgroud)
我可以使用以下命令将文件读取到python中:
import yaml
with open("config.yaml", "r") as f:
config = yaml.load(f)
Run Code Online (Sandbox Code Playgroud)
然后我可以使用
config['test1']['minVolt']
Run Code Online (Sandbox Code Playgroud)
在样式方面,使用配置文件中变量的最佳方法是什么?我将在多个模块中使用变量。如果我仅按上述方式访问变量,则如果重命名了某些内容,则需要重命名该变量的每个实例。
只是想知道在不同模块中使用配置文件中的变量的最佳或通用做法是什么。
我正在使用Java和spring boot.我想知道如何将Property占位符添加到.yml文件中.我发现了一些清晰的例子,但我不确定Property占位符在哪里被实例化.它是在系统env变量,文件等中吗?
Bootstrap.yml
spring:
cloud:
config:
username: ${my.stored.files.username}
password: ${my.stored.files.password}
label: ${spring.cloud.find.label}
uri: ${spring.cloud.config.uri}
enabled: false
failFast: true
Run Code Online (Sandbox Code Playgroud)
用户正在使用Property占位符,但是用户在哪里声明了它?这个.yml从哪里读取值?(与上述相同的问题)是否有解释连接的文件?
此Web应用程序将使用"cf push"推送到云代工厂,它将自动选择要配置的manifest.yml文件.如果可能的话,云代工厂的例子会很棒.
理解
app.name=MyApp
app.description=${app.name} is a Spring Boot application
Run Code Online (Sandbox Code Playgroud)
用户可以使用$ {app.name},因为它已定义.我对上面的例子很困惑.用户如何以及在哪里获得"$ {my.stored.files.username}.在哪里定义?我假设它将在system.properties或环境变量中.任何人都可以确认吗?
我想让一个yaml对象引用另一个,如下所示:
intro: "Hello, dear user."
registration: $intro Thanks for registering!
new_message: $intro You have a new message!
Run Code Online (Sandbox Code Playgroud)
上面的语法只是它可能如何工作的一个例子(它也是它在这个cpan模块中的工作方式.)
我正在使用标准的ruby yaml解析器.
这可能吗?
在RMarkdown中,我似乎能够在YAML头中创建"一些"动态变量,但不能为其他人创建:
例如,这有效:
---
title:
"Some Title, `r format(Sys.time(), '%d %B, %Y')`"
...
---
Run Code Online (Sandbox Code Playgroud)
但这不是.
---
...
pdf_document:
keep_tex: `r 'true'`
---
Run Code Online (Sandbox Code Playgroud)
但这就是DOES(即不动态).
---
...
pdf_document:
keep_tex: true
---
Run Code Online (Sandbox Code Playgroud)
那么我怎么能'动态地'分配keep_tex给真或假,我想做什么,是这样的:
---
...
pdf_document:
keep_tex: `r getOption('mypackage.keep_tex')`
---
Run Code Online (Sandbox Code Playgroud) 我想定义一个Ansible角色并注册动态变量:
---
- name: Check for {{ package }}
stat: path=/opt/packages/{{ package }}
register: "{{ package | regex_replace('-', '_') }}"
- name: Install {{ package }} {{ package_version }}
command: "custom-package-installer {{ package }} {{ package_version }}"
when: "not {{ package | regex_replace('-', '_') }}.stat.exists"
Run Code Online (Sandbox Code Playgroud)
用法如下:
- include: install_package.yml package=foo package_version=1.2.3
Run Code Online (Sandbox Code Playgroud)
但是,Ansible不承认条件:
TASK: [example | Install foo 1.2.3] ***********************************
fatal: [my-server] => error while evaluating conditional: not foo.stat.exists
FATAL: all hosts have already failed -- aborting
Run Code Online (Sandbox Code Playgroud)
如何动态定义变量,扩展{{ }}?
我有一个 YAML 文件,其内容如下:
a: 45
b: cheese
c: 7.8
Run Code Online (Sandbox Code Playgroud)
我希望能够将这些信息读取到 python 中的变量中,但是经过大量的谷歌搜索后,我无法确定这是否可能,或者我是否必须先将其放入另一个 python 类型中,然后才能将其放入变量中?最终我想使用 a 和 c 的值进行计算。
我们有一个包含重复部分的 gitlab-ci yaml 文件。
test:client:
before_script:
- node -v
- yarn install
cache:
untracked: true
key: client
paths:
- node_modules/
script:
- npm test
build:client:
before_script:
- node -v
- yarn install
cache:
untracked: true
key: client
paths:
- node_modules/
policy: pull
script:
- npm build
Run Code Online (Sandbox Code Playgroud)
我想知道,使用合并语法,是否可以提取公共部分以在这两个部分的上下文中有效地重用它。
.node_install_common: &node_install_common
before_script:
- node -v
- yarn install
cache:
untracked: true
key: client
paths:
- node_modules/
Run Code Online (Sandbox Code Playgroud)
但真正的问题是:我必须在哪个缩进级别合并块以确保 policy: pull 应用于缓存部分。我试图这样做:
test:client:
<<: *node_install_common
script:
- npm test
test:build:
<<: *node_install_common …Run Code Online (Sandbox Code Playgroud) 我的程序是Python的,我的配置文件是yaml.我想在我的yaml文件中使用变量和一些数学表达式.(例如:$ var + $ offset)似乎Ansible支持两者,但我不熟悉Ansible,不确定我是否只能导入处理yaml配置的部分.任何帮助将不胜感激.
更新:
理想情况下,我想使用Ansible的playbook功能作为库.这里描述的东西:http://oriolrius.cat/blog/2015/01/21/using-ansible-like-library-programming-in-python/但我无法使其工作似乎指令已过时.
当使用js-yaml 3.10.0包 在 node.js (v4.8.7) 中加载YAML 锚点时(这里有一个很好的使用示例),我收到以下错误:
“无法合并映射;提供的源对象不可接受”
例如,在我的输入 yaml 文件中,我有类似以下内容作为我的锚点:
defaultEd: &defaultEd
- 'Pennsylvania College of Technology AS'
- 'Pennsylvania College of Technology BS'
Run Code Online (Sandbox Code Playgroud)
在我的输入 yaml 文件中引用锚点的地方,我有以下内容:
...
education:
<<: *defaultEd
qs:
- 'Reading'
- 'Writing'
...
Run Code Online (Sandbox Code Playgroud)
我希望在我的输出中完成以下任务:
education:
- 'Pennsylvania College of Technology AS'
- 'Pennsylvania College of Technology BS'
Run Code Online (Sandbox Code Playgroud)
错误显示如下:
{ [YAMLException: cannot merge mappings; the provided source object is unacceptable at line 21, column 1:
qs:
^]
name: 'YAMLException',
reason: 'cannot merge …Run Code Online (Sandbox Code Playgroud) yaml ×10
python ×4
ansible ×2
ruby ×2
config ×1
java ×1
javascript ×1
jinja2 ×1
localization ×1
manifest ×1
node.js ×1
pyyaml ×1
r ×1
r-markdown ×1
spring-boot ×1
variables ×1