Every repository with this icon (
Every repository with this icon (
| Description: | A framework for creating configurable, distributable tasks and workflows. edit |
-
Redirecting output for the server is tricky.
Basic Redirection Proposal
- Redirect stdout and app log based on build, effectively creating 'runs'
- Leave stderr to console, or to daemon redirection for logging errors
This will handle use cases of building a dump file. Handles can be open/closed from the app control panel, and then the files can be accessed through app/data.
Leaving one stderr file prevents error messages from being split across multiple files.
Monitor Proposal
- Implement renderer middleware that will render to a directory/id where id will increment and render flagged tasks
- Create a directory.index partial
This basic idea allows specific tasks to render their results in an incrementing fashion. Each result can be monitored, essentially, as it comes off the task. The effect is to allow an individual task to be run without a dump, or conversely, to have the results of a task rendered in one specific way.
Comments
-
Signatures
No problem to determine incorrect node signatures at the call, process, and process_block levels. The output should notify the node, and ideally the join causing the problem. Once a trace is in place, the join could be found by searching back in the trace for the specified inputs:
trace.reverse_each if node.joins has the present task and the inputs come from the join (match object, or find object in an array) then consider the join found (or search everything... maybe the issue is upstream?)And once you have the join, help can be provided to suggest what needs to be done to fix the error.
Replay
A breakpoint could be added to step through the workflow. In this case, or perhaps generally, the trace should be saved to disk allowing quick replay. Will not work with objects that cannot be serialized, and that's ok. Simply encourages people not to pass around IO or blocks, or to fix YAML.
Comments
-
This will cause an error because a single default const_name is not determined for the overlapping load paths:
TAP_LOAD_PATHS='[lib, lib/tap]' ruby -I../lazydoc/lib -I../configurable/lib bin/tap run --helpThe error message needs to be cleaned up.
Comments
-
It would be helpful if apps allowed middleware to have before/after hooks for a run:
def run synchronize do return self unless state == State::READY @state = State::RUN end middleware.each do |middleware| if middleware.respond_to?(:before_run) middleware.before_run end end begin while state == State::RUN break unless entry = queue.deq dispatch(*entry) end rescue(TerminateError) # gracefully fail for termination errors queue.unshift(*entry) ensure synchronize { @state = State::READY } end middleware.each do |middleware| if middleware.respond_to?(:after_run) middleware.after_run end end self endComments
-
Default joins on nil, no joins on joins.empty?
0 comments Created 5 months ago by bahuvrihiCurrently the app behavior is reversed. Empty joins should be respected, while nil joins should invoke the defaults. Easy fix, but will require some trickery for reassigning joins.
Also be sure to fix Null in this case; afterwards the null task should provide a sensible message for:
% tap run -- null --: nullComments
-
A preview config that can prints sh commands rather than running them. In this way a task can generate a script on the fly.
Comments
-
Or maybe have an advanced Rap::Utils that requires highline and net-ssh to perform this functionality.
Comments
-
In principle it should be able to activate the wrong gem from Env when multiple versions of the gem are present on a box. This is because gems are activated by the require for a Constant, and all the Constant has to go off of is the relative path.
Comments
-
http://bka-bonn.de/wordpress/index.php/2009/06/01/determine-os-with-ruby/ (see comments)
require ‘rbconfig’ puts RbConfig::CONFIG[’target_os’] => “linux”This is where the update needs to happen.
def match_platform?(*platforms) platforms.each do |platform| platform.to_s =~ /^(non_)?(.*)/ non = true if $1 match_platform = !RUBY_PLATFORM.index($2).nil? return false unless (non && !match_platform) || (!non && match_platform) end true endComments












Run Proposal