我希望生成一个链接,该链接的前缀附加到命名路由本身。像这样显示路径“/old/recipes”:recipes_path(:prefix=>"old/")#thecorrectwayshouldshow"/old/recipes"我不想动routes.rb文件,而是修改带前缀的命名路由。这可能吗?您将如何正确地做到这一点?编辑:我正在使用Rails3。添加可选前缀的原因是我也想使用普通的recipes_path。所以我想同时使用“/recipes”和“/old/recipes”。 最佳答案 如果您不想触及路由文件,您将会遇到很多麻烦
这是一个工作配方示例,它循环访问网站名称数组并使用函数createIisWebsite()在IIS中创建它们。defcreateIisWebsite(websiteName)iis_sitewebsiteNamedoprotocol:httpport80path"#{node['iis']['docroot']}/#{websiteName}"host_header"#{websiteName}.test.kermit.a-aws.co.uk"action[:add,:start]endend在我们的实际解决方案中,这些数据存储在别处并通过WebAPI访问。websiteNames=[
我正在尝试使用Vagrant创建我的第一个ChefRecipe,但在第一步就遇到了问题。我的Recipe的第一行是:include_recipe"apt"但是当我尝试vagrantprovision时,出现以下错误:==>default:[2014-09-21T07:15:42+00:00]WARN:MissingCookbookDependency:==>default:Recipe`apt`isnotintherun_list,andcookbook'apt'==>default:isnotadependencyofanycookbookintherun_list.Toloadth
假设我有一个变量directory_list,我在名为get_directory_list的ruby_block中定义和设置了它。我可以稍后在我的Recipe中使用directory_list吗,或者编译/收敛过程会阻止这种情况吗?例子:ruby_block"get_file_list"doblockdotransferred_files=Dir['/some/dir/*']endendtransferred_files.eachdo|file|file"#{file}"dogroup"woohoo"user"woohoo"endend 最佳答案
我是Chef的新手,所以我对条件not_if在执行资源中的工作方式有些困惑。我知道如果命令返回0或true,它会告诉Chef不要执行命令;但是,在我的代码中,它显然仍在运行命令。下面的代码应该创建一个用户(及其密码)和一个数据库;然而,如果用户和数据库已经存在,它不应该做任何事情。用户、数据库和密码在属性中定义。以下是我的代码:execute"create-user"docode=Chef给我以下错误:在资源“execute[create-user]”上执行操作run时出错...[2013-01-25T12:24:51-08:00]致命:Mixlib::ShellOut::ShellC
我正在尝试vagrant安装并希望将1.9.3-p327作为默认的ruby版本。我正在使用chef-solo和librarian-chef来管理vagrant机器。我为chef-solo配置的vagrant文件看起来像这样config.vm.provision:chef_solodo|chef|chef.cookbooks_path="cookbooks"chef.add_recipe"apt"chef.add_recipe"build-essential"chef.add_recipe"git"chef.add_recipe"ruby_build"chef.add_recipe"
我想在ChefRepo中分享一些跨Recipe的方法。我知道在Recipe级别上,我可以将代码放入库目录中的模块中(参见relatedquestion)。我正在寻找的是类似的东西,但在我的Chef存储库中的所有Recipe中都可以找到。我可以想到几个解决方案:创建一个gem,将gem安装为chef运行的一部分。这似乎有点矫枉过正。将文件放在某个文件夹中,然后将该文件夹添加到配方文件中的$LOAD_PATH中。我感觉这不适用于实际部署,因为Chef服务器对repo一无所知。将文件放在某个文件夹中,并将其符号链接(symboliclink)到每本Recipe的库目录中。最后一个选项似乎是最
我正在为一个vagrantbox的ChefRecipe而苦苦挣扎。我正在使用chef-solo。我对Ruby不是很满意(我以前从未使用过),所以如果我必须这样做的话,编写我的Recipe的过程会很长vagrantprovision每次。有没有办法调试特定的配方?甚至来自虚拟机外壳。我看过chef-shell存在(http://docs.opscode.com/chef_shell.html),当我在虚拟机中时我可以启动它(它工作),但我不明白如何加载我的Recipe并测试它们。 最佳答案 在当前vagrantchefprovisio
我是ruby和Chef的新手。我一直在开发Recipe,提交它们,将它们上传到Chef服务器,然后通过角色更改将它们部署到Chef客户端,然后在客户端上运行“chef-client”。这个过程很慢。我如何使用IDE(在我的例子中是Eclipse)开发Recipe并能够调试(设置断点、观察变量等)并运行它们,而无需将它们上传到Chef服务器,然后使用Chef-客户运行?我将Eclipse3.7Indigo与“动态语言工具包-Ruby开发工具3.0.0.v20110424-7Z--E_EkMYXO4k101442”插件一起使用我正在使用10.xChef代码行开发OpscodeChef说
在ChefRecipe中做一点DRY的最佳方法是什么?IE。只是分解Ruby代码的一小部分,所以我不会一遍又一遍地复制粘贴它。以下当然会失败,因为:NoMethodError:undefinedmethod`connect_root'forChef::Resource::RubyBlock我可能在一个配方中有多个ruby_blocks,因为它们做不同的事情并且需要有不同的not_ifblock才能真正幂等。defconnect_root(root_password)m=Mysql.new("localhost","root",root_password)beginyieldmens