Class: Ruber::RubyRunner::RubyRunnerPlugin
- Inherits:
-
ExternalProgramPlugin
- Object
- Qt::Object
- Plugin
- GuiPlugin
- ExternalProgramPlugin
- Ruber::RubyRunner::RubyRunnerPlugin
- Defined in:
- plugins/ruby_runner/ruby_runner.rb
Overview
Abstract class plugins which need to run a ruby program can derive from.
It provides some convenience methods to retrieve an option for a target (which can be either a global project, a document or a file) so that, if the option isn’t found in the target itself, a global value is used. It also provide methods to retrieve the path of the ruby interpreter to use for a given target, taking into account the choice made by the user in the “Interpreters” submenu.
Lastly, this class adds a project option called ruby_options
to the PS for the
plugin.
Note: classes which want to derive from this class should derive from RubyRunnerPlugin rather than from this.
Direct Known Subclasses
FilesRunner::Plugin, Ruber::RSpec::Plugin, Ruber::Rake::Plugin
Constant Summary
Constants inherited from Plugin
Instance Attribute Summary
Attributes inherited from ExternalProgramPlugin
Attributes included from PluginLike
Instance Method Summary (collapse)
-
- (RubyRunnerPlugin) initialize(pso, group, rules = {}, order = nil, line_buffered = true)
constructor
Creates a new instance.
-
- (String) interpreter_for(target, ignore_project = false)
Returns the name of the ruby interpreter to use for the given target.
-
- (Object) option_for(target, group, name, ignore_project = false, abs = false)
Searches for an option for the given target.
-
- (<String>) ruby_command_for(target, dir, opts = {})
Returns the command to use to execute ruby according to the appropriate options for the given target.
Methods inherited from ExternalProgramPlugin
#display_exit_message, #do_stderr, #do_stdout, #failed_to_start, #process_standard_error, #process_standard_output, #run_process, #shutdown, #slot_process_finished, #stop_process
Methods inherited from GuiPlugin
#action_collection, #execute_action, #register_action_handler, #setup_actions, #unload
Methods inherited from Plugin
Methods included from PluginLike
#add_extensions_to_project, #add_options_to_project, #add_widgets_to_project, #create_tool_widget, #delayed_initialize, #initialize_plugin, #load_settings, #plugin_name, #query_close, #register_options, #register_with_project, #remove_extensions_from_project, #remove_from_project, #remove_options_from_project, #remove_widgets_from_project, #restore_session, #save_settings, #session_data, #setup_action, #setup_actions, #shutdown, #unload, #update_project
API for feature ruby_runner
Methods API
Constructor Details
- (RubyRunnerPlugin) initialize(pso, group, rules = {}, order = nil, line_buffered = true)
Creates a new instance.
Before passing it to RunnerPlugin’s constructor, it adds the ruby_options
project option to the plugin specification object, in the given group.
the plugin
to. If an option called ruby_options
already exists in the group, it won’t be
overwritten
but cannot contain the :all
entry and must be an array.
must be an array, even if it only contains one entry
must be an array, even if it only contains one entry
305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 |
# File 'plugins/ruby_runner/ruby_runner.rb', line 305 def initialize pso, group, rules = {}, order = nil, line_buffered = true group = group.to_sym @group = group default_rules = {:scope => [:global], :file_extension => [], :mimetype => [], :place => [:local]} rules = default_rules.merge rules = { :name => :ruby_options, :group => group, :default => Ruber[:config][:ruby, :ruby_options], :scope => rules[:scope], :mimetype => rules[:mimetype], :file_extension => rules[:file_extension], :order => order, :place => rules[:place] } pso.[[group, :ruby_options]] ||= PluginSpecificationReader::Option.new super pso, line_buffered end |
Instance Method Details
- (String) interpreter_for(target, ignore_project = false)
Returns the name of the ruby interpreter to use for the given target
It is specialized version of #option_for which looks for the ruby/ruby
option
and takes into account the selected entry in the “Interpreters” submenu.
381 382 383 384 |
# File 'plugins/ruby_runner/ruby_runner.rb', line 381 def interpreter_for target, ignore_project = false Ruber[:ruby_interpreters].chosen_interpreter || option_for(target, :ruby, :ruby, ignore_project) end |
- (Object) option_for(target, group, name, ignore_project = false, abs = false)
Searches for an option for the given target.
The behaviour of this method depends on what target is:
- if it is an AbstractProject, the option is searched in it
- if it is a Document or a string representing a file name and belongins to the current project, the option is searched in the current project
- if it is a Document but doesn’t belong to the current project (or no current project exists), the option is searched in the document’s own project
- if it is a string representing a file which doesn’t belong to the current project (or there’s no current project) the option is looked for in the global configuration object.
In all cases, if the search fails, the option is looked up in the global configuration object.
option for. If nil, the option will directly be looked up in the global configuration object current project, even if target is a Document or the name of a file belonging to it
351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 |
# File 'plugins/ruby_runner/ruby_runner.rb', line 351 def option_for target, group, name, ignore_project = false, abs = false cont = [] case target when AbstractProject then cont << target when Document cont << (ignore_project ? (target.own_project) : target.project) when String if !ignore_project and Ruber[:world].projects.project_for_file target cont << Ruber[:world].active_project end end cont << Ruber[:config] abs = :abs if abs cont.each_with_index do |c, i| begin return c[group, name, abs] rescue IndexError raise if i == cont.size - 1 end end end |
- (<String>) ruby_command_for(target, dir, opts = {})
Returns the command to use to execute ruby according to the appropriate options for the given target.
To build the command, it uses the ruby/ruby
and the ruby_options
(in the group
specified in the constructor).
the -C
flag)
made by the user in the “Interpreters” submenu
option as default interpreter
of the ruby_options
option.
to use and whose other elements are the options to pass to the interpreter.
408 409 410 411 412 413 414 415 416 417 418 |
# File 'plugins/ruby_runner/ruby_runner.rb', line 408 def ruby_command_for target, dir, opts = {} ruby = Ruber[:ruby_interpreters].chosen_interpreter if !ruby or opts[:default_interpreter] ruby = if opts[:ruby] then opts[:ruby] else option_for target, :ruby, :ruby, opts[:ignore_project] end end = opts[:ruby_options] ||= option_for target, @group, :ruby_options, opts[:ignore_project] [ruby] + + ['-C', dir] end |