如何在IDE(如Eclipse)中开发和调试Chef cookbook和配方?

时间:2011-10-17 22:54:18

标签: ruby eclipse ide eclipse-plugin chef

我是ruby和Chef的新手。我一直在开发烹饪书,提交它们,将它们上传到Chef服务器,然后将它们部署到一个更改角色的Chef客户端,然后在客户端上运行“chef-client”。这个过程很慢。

我如何使用IDE(在我的情况下为Eclipse)开发烹饪书并能够调试(设置断点,观察变量等)并运行它们而无需将它们上传到Chef服务器,然后将它们拉回来厨师 - 客户经营?

  • 我正在使用Eclipse 3.7 Indigo和“Dynamic Languages Toolkit - Ruby Development Tools 3.0.0.v20110424-7Z - E_EkMYXO4k101442”插件
  • 我正在使用10.x Chef代码行开发Opscode Chef cookbook
  • 我正在开发一个Ubuntu 10.10系统,用于开发在RHEL / Centos 5服务器上运行的烹饪书
  • 我们运行自己的Chef Server(开源)

6 个答案:

答案 0 :(得分:4)

我也在寻找这种工具。

发现这个显示了这样做的人。

http://stevendanna.github.com/blog/2012/01/28/shef-debugging-tips-1/

答案 1 :(得分:1)

可能已经知道但是目前我们可以使用ATOM和其他软件包语言 - 厨师,linter-foodcritic,linter-ruby

https://atom.io/

答案 2 :(得分:1)

答案并非如此简单,截至目前,Opscode还没有#34;官方插件"。

我在过去的几个晚上为eclipse创建了一个厨师插件。它现在非常简陋,如果其他人表现出对它的兴趣,我可能会添加更多...现在它完成了我需要的大部分工作(创建新的食谱,添加食谱,属性,lwrps,等等,主要是我在厨师工具(厨师,berks,厨房,食品杂志等)周围放置一个日食包装纸

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或厨师的食谱,例如:

主厨生成食谱my_cookbook

然后在eclipse中创建一个新的ruby项目,打开你刚刚创建的食谱。一旦创建,您就可以编辑ruby文件等。您还可以使用所有其他厨师功能(例如厨师生成食谱)来帮助您入门。

答案 3 :(得分:0)

我倾向于在目标虚拟机上使用chef-solo。我将查看我的cookbook repo并使用模板化的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设置为调试有助于与跑步者一起骑行。

答案 4 :(得分:0)

有些人在开普勒工作并发现:

  • 导入Chef作为ruby项目通常会失败,因为导入器似乎无法识别厨师特定的结构,如“cookbook”等作为源的位置。所有你看到的是红宝石翻译库
  • 强制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>

答案 5 :(得分:0)

对于Eclipse Ruby开发工具,截至2015年5月13日,不支持厨师烹饪书,但如果您愿意,可以使用专有替代品。

RubyMine 7 IDE supports Chef,包含标准Chef资源及其属性的自动完成和定义导航。 Ruby Mine基于Intellij IDEA。

如果您在Chef integration plugin

之上安装ruby plugin,则此功能可与Intellij IDEA配合使用,而不是RubyMine

If you are student or teachers,或for education or trainingfor open source projects,您可以申请免费许可。