2011-10-17 160 views
13

我是红宝石和厨师的新手。我一直在开发食谱,提交它们,将它们上传到厨师服务器,然后将它们部署到厨师客户端,然后在客户端上进行角色变更,然后运行“厨师 - 客户端”。这个过程很慢。如何在IDE(如Eclipse)中开发和调试厨师食谱和食谱?

我如何使用IDE(在我的情况下是Eclipse)开发食谱,并能够调试(设置断点,观察变量等)并运行它们而不上传到Chef Server,然后将它们拉回厨师 - 客户端运行?

  • 我使用Eclipse 3.7靛蓝与“动态语言工具包 - Ruby开发工具3.0.0.v20110424-7Z - E_EkMYXO4k101442”插件
  • 我开发Opscode公司厨师食谱与10.x中厨师代码行
  • 我正在一个Ubuntu 10.10系统开发的菜谱上要在RHEL/Centos的运行5个服务器
  • 我们运行我们自己的厨师服务器(开源)

回答

0

我倾向于使用chef-solo上目标虚拟机。我会看看我的食谱回购,并用模板solo.rb局部迭代:

path File.expand_path(File.dirname(__FILE__)) 
cookbook_path "#{File.expand_path(File.dirname(__FILE__))}/cookbooks" 
log_level ENV['CHEF_LOG_LEVEL'] && ENV['CHEF_LOG_LEVEL'].downcase.to_sym || :info 
log_location ENV['CHEF_LOG_LOCATION'] || STDOUT 
verbose_logging ENV['CHEF_VERBOSE_LOGGING'] 

设置log_level调试有助于颇有几分与亚军骑自行车时。

+0

以这种方式暂停执行之后,有什么方法可以设置断点和监视变量吗?也许有一种方法可以在IDE之外启用ruby调试,但是可以在厨师独奏中运行? –

+1

对于探索性和初步开发,您可能需要查看[shef](http://wiki.opscode.com/display/chef/Shef),Opscode REPL。这只是一个仪表化的irb会话,所以你可以在那里用运行时做任何你想做的事情。 – jodell

+1

厨师独奏很好。它仅缺乏广泛用于多节点配置的厨师搜索功能。我会说[Berkshelf](https://github.com/RiotGames/berkshelf)和[vagrant](http://www.vagrantup.com/)可以很好地测试食谱的行为。如果你只是想测试你的食谱和属性的交互,[chefspec](https://github.com/acrmp/chefspec)会很好,可以提供像测试报告一样的单元测试。 – shawnzhu

3

您可以使用Eclipse作为一个简单的编辑器,厨师烹饪。你不会有任何IDE支持和调试,但是像我这样的人可能更喜欢它。

如果您在Eclipse上使用Ruby编辑器,则可能会为.rb Ruby文件获得语法高亮显示,但我还没有尝试过。

您可以通过添加一个项目文件里面做任何文件夹中的Eclipse项目(例如厨师,回购或特定cookcook):

 
<?xml version="1.0" encoding="UTF-8"?> 
<projectDescription> 
    <name>PROJECT_NAME</name> 
    <comment></comment> 
    <projects> 
    </projects> 
    <buildSpec> 
    </buildSpec> 
    <natures> 
    </natures> 
</projectDescription> 

然后在Eclipse中选择文件 - >导入 - >常规“ - >”将项目存入工作区“并选择添加.project文件的文件夹。

0

难道开普勒一些工作,结果发现:

  • 导入厨师为Ruby项目,因为进口商似乎无法识别,如“食谱”等,作为源位置的特定厨师结构通常失败。所有你看到的是Ruby解释器库
  • 强制红宝石进口看文件夹,用手源(声明源文件夹)也将失败,因为该文件夹中的代码和所有子文件夹中是不可见的
  • 导入作为一般项目在显示所有基于Chef的结构和他们的代码方面工作,但代码不被识别为ruby代码,并且没有语法相关的能力
  • 作为一般项目导入,然后添加ruby buildspec和ruby nature 确实有效。所有文件都可见,使用语法高亮显示可以使用ruby编辑器进行编辑。

总之,补充一点:

<buildSpec> 
    <buildCommand> 
     <name>org.eclipse.dltk.core.scriptbuilder</name> 
     <arguments></arguments> 
    </buildCommand> 
</buildSpec> 
<natures> 
    <nature>org.eclipse.dltk.ruby.core.nature</nature> 
</natures> 

我怀疑有任何调试等 - 不是我的目标,因为我在Linux上运行,但至少我们有一个像样的编辑器和git的整合!

为了安全起见,还将.buildpath文件复制到项目位置...不确定它的必要性。通用内容是:

<?xml version="1.0" encoding="UTF-8"?> 
<buildpath> 
    <buildpathentry kind="src" path=""/> 
    <buildpathentry kind="con" path="org.eclipse.dltk.launching.INTERPRETER_CONTAINER"/> 
</buildpath> 
0

对于Eclipse的Ruby开发工具,有一个厨师食谱为2015年5月13日的不支持,但是有专有的选择,如果你想要的。

RubyMine 7 IDEsupports Chef自动完成和标准厨师资源及其属性的定义导航。 Ruby Mine基于Intellij IDEA。

相反的RubyMine的,这个功能与IntelliJ IDEA的作品,如果你的ruby plugin

If you are student or teachers顶部安装Chef integration plugin,或为for education or training,或for open source projects,您可以申请免费牌照。

0

可能已经知道,但是目前我们可以用ATOM与附加软件包语言厨师,棉短绒,foodcritic,棉短绒,红宝石

https://atom.io/

1

答案并不那么简单,因为今天Opscode公司的没有“官方插件”。

我花了过去几个晚上创建一个日食的厨师插件。如果其他人表现出对它的兴趣,我可能会添加更多...现在它完成了我所需要的大部分工作(创建新的食谱,添加食谱,属性,lwrps等),主要是我把周围的厨师工具蚀包装(厨师,伯克斯,厨房,foodcritic等)

https://github.com/rleibman/chef-eclipse-plugin

我没有删除这个插件的意图,除非Opscode公司又发表了自己。

在本教程的帮助下,我开始创建这个插件:https://cvalcarcel.wordpress.com/2009/07/08/writing-an-eclipse-plug-in-part-1-what-im-going-to-do/。如果你对命令行感到满意,你可以用已经存在的东西来完成大部分你需要的东西:创建一个与berks或者厨师e一起烹饪的食谱。G:

厨师生成菜谱my_cookbook

,然后创建一个新的Ruby项目在Eclipse中打开您刚刚创建的菜谱。一旦创建完成,您可以编辑红宝石文件等。您还可以使用其他所有厨师功能(例如厨师生成配方)以帮助您开始。

+2

我建议你分享一下。如果不是,这个答案对问题没有帮助。 – zuazo

+0

对不起,我忘了,我已经添加了它。 – rleibman

+0

请同时在您的文章中添加更多详情。我知道这是您的回购,但如果您迁移或链接更改,此答案不会帮助任何人。 – dckuehn