| ... | ... |
@@ -1,5 +1,21 @@ |
| 1 | 1 |
require_relative "rubysermon/version" |
| 2 |
+require_relative "rubysermon/mod_loader" |
|
| 3 |
+require_relative "rubysermon/mod_template" |
|
| 2 | 4 |
|
| 3 | 5 |
module Rubysermon |
| 4 |
- # Your code goes here... |
|
| 6 |
+ class App |
|
| 7 |
+ |
|
| 8 |
+ def initialize |
|
| 9 |
+ |
|
| 10 |
+ end |
|
| 11 |
+ |
|
| 12 |
+ private |
|
| 13 |
+ def load_mod(mod_name) |
|
| 14 |
+ begin |
|
| 15 |
+ @loader = ModLoader.load mod_name |
|
| 16 |
+ rescue ModLoaderException => e |
|
| 17 |
+ $stderr = e.message |
|
| 18 |
+ end |
|
| 19 |
+ end |
|
| 20 |
+ end |
|
| 5 | 21 |
end |
| 1 | 6 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,18 @@ |
| 0 |
+module Rubysermon |
|
| 1 |
+ class ModLoader |
|
| 2 |
+ |
|
| 3 |
+ def self.load(new_class) |
|
| 4 |
+ begin |
|
| 5 |
+ require_relative 'mod/' + new_class.downcase |
|
| 6 |
+ |
|
| 7 |
+ capitalized_class = new_class.capitalize |
|
| 8 |
+ return (Rubysermon.const_get capitalized_class).new |
|
| 9 |
+ rescue LoadError |
|
| 10 |
+ raise ModLoaderException, "File module not found" |
|
| 11 |
+ end |
|
| 12 |
+ end |
|
| 13 |
+ |
|
| 14 |
+ end |
|
| 15 |
+ |
|
| 16 |
+ class ModLoaderException < Exception; end |
|
| 17 |
+end |
|
| 0 | 18 |
\ No newline at end of file |
| 1 | 8 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,17 @@ |
| 0 |
+require_relative '../../test_helper.rb' |
|
| 1 |
+ |
|
| 2 |
+class ModLoader_test < MiniTest::Unit::TestCase |
|
| 3 |
+ |
|
| 4 |
+ def test_load_non_existing_file |
|
| 5 |
+ assert_raises(Rubysermon::ModLoaderException) do |
|
| 6 |
+ Rubysermon::ModLoader.load '_what_the_fuck_' |
|
| 7 |
+ end |
|
| 8 |
+ end |
|
| 9 |
+ |
|
| 10 |
+ def test_load_existing_file |
|
| 11 |
+ possible_mods = %w(cpu Cpu CPU) |
|
| 12 |
+ possible_mods.each do |mod| |
|
| 13 |
+ assert_equal((Rubysermon::ModLoader.load mod).class.to_s, 'Rubysermon::Cpu') |
|
| 14 |
+ end |
|
| 15 |
+ end |
|
| 16 |
+end |
|
| 0 | 17 |
\ No newline at end of file |