Chef Support
Prerequisites
- Make sure the Chef Integration repository plugin is installed and enabled. The plugin is not bundled with RubyMine, but it can be installed from the JetBrains plugin repository as described in Installing, Updating and Uninstalling Repository Plugins and Enabling and Disabling Plugins.
Chef Support plugin resides here.
- The gem chef is installed on the Ruby SDK configured for your project.
Basics
Following the main concepts of Chef, the Chef Integration plugin introduces cookbooks, recipes, resources and attributes. The plugin provides marking and detection for a cookbook and code insight for the resources and their attributes.
If a certain directory contains a sub-directory named recipes, with the Ruby file inside, such directory is recognized as a cookbook. RubyMine suggests to mark such a directory with icon.
Since a directory is marked as a cookbook, code insight is available for any Ruby file inside the cookbook
folder.
Marking directories as cookbooks
RubyMine provides the following ways of marking a directory as a cookbook:
- RubyMine recognizes a cookbook and suggests to configure it. To see the suggestion to configure, start typing into a recipie file:
- Command Mark Directory As on the context menu of the Project Tool Window:
- The Project Structure page of the Settings/Preferences dialog:
You can always cancel marking, using the command Unmark directory ....
Coding assistance
- It is possible to invoke code completion for any Chef resource:
- RubyMine enables navigation to a resource declaration in the Chef library:
- Own attributes of a resource, and the inherited ones are also available inside the resource code block:
- Whenever possible, RubyMine suggests attribute arguments, such as allowed actions for the action attribute; actions for the notifies and subscribes; all boolean arguments, and many more.
Running the Bundler
On the UNIX-like computers, RubyMine suggests to run the Bundler with the sudo
privileges, if SDK so requires. For example, Chef DK by default, requires installing gems under sudo
: