<!-- This file is auto-generated by YARD from https://github.com/openhab/openhab-jruby/blob/main/USAGE.md; please do not edit directly -->
-<!-- To regenerate, run `bin/yard display -f markdown -o https://openhab.github.io/openhab-jruby/5.4 file:USAGE.md` -->
+<!-- To regenerate, run `bin/yard display -f markdown -o https://openhab.github.io/openhab-jruby/main file:USAGE.md` -->
# JRuby Scripting
Using the openHAB UI, first create a new rule and set a trigger condition.
-
+
#### Adding Actions
Select "Add Action" and then select "Run Script" with "Ruby".
This will bring up an empty script editor where you can enter your JavaScript.
-
+
You can now write rules using standard Ruby along with the included openHAB [library](#library-details).
-
+
For example, turning a light on:
### Logging
-The JRuby Scripting addon has a global `logger` object for logging.
+The JRuby Scripting addon has a global `logger` object for logging. To log a message on `INFO` log level:
-```text
-log:set DEBUG org.openhab.automation.jrubyscripting.script
+```ruby
+logger.info("The current time is #{Time.now}")
```
The default logger name for UI rules is `org.openhab.automation.jrubyscripting.script`.
For file-based rules, it's based on the rule's ID, such as `org.openhab.automation.jrubyscripting.rule.myrule.rb:15`
-This can be changed by assigning a new logger locally.
-Please be aware that messages might not appear in the logs if the logger name does not start with `org.openhab`.
-This behaviour is due to [log4j2](https://logging.apache.org/log4j/2.x/) requiring definition for each logger prefix.
+To use a custom logger name:
```ruby
logger = OpenHAB::Log.logger("org.openhab.custom")
```
+Please be aware that messages might not appear in the logs if the logger name does not start with `org.openhab`.
+This behaviour is due to [log4j2](https://logging.apache.org/log4j/2.x/) requiring definition for each logger prefix.
+
The [logger](https://openhab.github.io/openhab-jruby/main/OpenHAB/Logger.html) is similar to a standard [Ruby Logger](https://docs.ruby-lang.org/en/master/Logger.html).
Supported logging functions include:
You can access all variables of the current context in the created timers.
Note: Variables can be mutated (changed) after the timer has been created.
-Be aware that this can lead to unattended side effects, e.g. when you change the variable after timer creation, which can make debugging quite difficult!
+Be aware that this can lead to unintentional side effects, e.g. when you change the variable after timer creation, which can make debugging quite difficult!
```ruby
my_var = "Hello world!";