Вот команда рубин Я хотел бы сохранить выход Time.now.strftime('%m%d%Y_%H%M')
я думал, что я мог бы просто добавить что-то вроде этого, чтобы мой рецепт "инициализировать атрибут chef с блоком ruby?
TODAY={ ::Time.now.strftime('%m%d%Y_%H%M') }
, но это не похоже на работу
==> default: [2015-04-10T17:53:44+00:00] ERROR: /tmp/vagrant-chef/eb36617d9c55f20fcee6cd316a379482/cookbooks/test-cookbook/recipes/install_app.rb:12: syntax error, unexpected '}', expecting tASSOC
==> default: TODAY={ (Time.now.strftime('%m%d%Y_%H%M')) }
==> default: ^
==> default: [2015-04-10T17:53:44+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
в конце концов, я хочу, чтобы сделать этот атрибут, чтобы я мог получить доступ к нему из нескольких рецептов
default['neustar-npac-deployment']['node_ohai_time'] = TODAY={ ::Time.now.strftime('%m%d%Y_%H%M') }
спасибо!
Почему у вас есть '{}' это не блок, а фактический синтаксис Hash. если вы хотите, чтобы это был ленивый блок, используйте '-> {}' или 'lambda {}', который будет генерировать 'lambda' или' Proc.new {} ', которые будут генерировать true' Proc'. что-то вроде 'TODAY = -> {Time.now.strftime ('% m% d% Y_% H% M')}'. Тогда для получения результата это будет 'TODAY.call', или вы можете просто установить его непосредственно как' TODAY = Time.now.strftime ('% m% d% Y_% H% M') ', но, похоже, вы этого хотели чтобы быть ленивым оцененным, поэтому лямбда может поместиться лучше всего. – engineersmnky
Я не против, если он ленив, я просто следовал примеру, не понимая, для чего предназначены '{}'. Я попытаюсь использовать его непосредственно и посмотреть, не делает ли это трюк. Спасибо – david
Моя точка была 'TODAY = Time.now.strftime ('% m% d% Y_% H% M')' означает 'СЕГОДНЯ' не изменится после его оценки, потому что это фиксированная константа, где как' TODAY = -> {Time.now.strftime ('% m% d% Y_% H% M')} 'означает, что каждый раз, когда вы используете' TODAY.call', он будет оценивать лямбда и возвращать текущий ответ. Имеет ли это смысл? – engineersmnky