Module: IseqRailsTools

Defined in:
lib/iseq_rails_tools.rb,
lib/iseq_rails_tools.rb,
lib/iseq_rails_tools/railtie.rb,
lib/iseq_rails_tools/version.rb,
lib/iseq_rails_tools/source_file.rb,
ext/iseq_rails_tools/iseq_rails_tools.c

Defined Under Namespace

Classes: Railtie, SourceFile

Constant Summary collapse

DIRECTORY_NAME =
'.iseq'
VERSION =
'0.0.7'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.iseq_dirObject

Returns the value of attribute iseq_dir.



16
17
18
# File 'lib/iseq_rails_tools.rb', line 16

def iseq_dir
  @iseq_dir
end

Class Method Details

.clearObject



18
19
20
# File 'lib/iseq_rails_tools.rb', line 18

def clear
  Dir.glob(File.join(iseq_dir, '**/*.yarb')) { |path| File.delete(path) }
end

.iseq_path_for(ruby_source_path) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'ext/iseq_rails_tools/iseq_rails_tools.c', line 11

static VALUE iseq_path_for(VALUE self, VALUE ruby_source_path)
{ 
  char *source_path = rb_string_value_cstr(&ruby_source_path);
  char iseq_path[strlen(source_path) * 2 + 6];

  int source_idx = 0;
  int iseq_idx = 0;

  while(source_path[source_idx] != '\0') {
    if (whitelisted(source_path[source_idx])) {
      memcpy(iseq_path + iseq_idx++, source_path + source_idx++, 1);
    } else {
      sprintf(iseq_path + iseq_idx, "%02x", source_path[source_idx++]);
      iseq_idx += 2;
    }
  }

  memcpy(iseq_path + iseq_idx, ".yarb", 5);
  return rb_str_new(iseq_path, iseq_idx + 5);
}