nutella_lib 0.4.27 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +3 -0
- data/.travis.yml +4 -1
- data/Gemfile +10 -11
- data/README.md +10 -3
- data/Rakefile +7 -15
- data/VERSION +1 -1
- data/lib/nutella_lib/app_core.rb +3 -1
- data/lib/nutella_lib/core.rb +7 -12
- data/lib/nutella_lib/framework_core.rb +47 -0
- data/lib/nutella_lib/framework_log.rb +49 -0
- data/lib/nutella_lib/framework_net.rb +538 -0
- data/lib/nutella_lib/framework_persist.rb +125 -0
- data/lib/nutella_lib.rb +5 -0
- data/lib/simple_mqtt_client/simple_mqtt_client.rb +43 -22
- data/nutella_lib.gemspec +37 -42
- data/spec/nutella_lib/core_spec.rb +10 -0
- data/spec/nutella_lib/framework_core_spec.rb +22 -0
- data/spec/simple_mqtt_client/simple_mqtt_client_spec.rb +151 -0
- data/spec/spec_helper.rb +104 -0
- data/spec/stubs/fake_mqtt_client.rb +29 -0
- metadata +33 -114
- data/test/helper.rb +0 -35
- data/test/test_logger.rb +0 -26
- data/test/test_nutella_net.rb +0 -79
- data/test/test_nutella_net_app.rb +0 -102
- data/test/test_peristence.rb +0 -48
- data/test/test_simple_mqtt_client.rb +0 -103
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa7384c4726a3e52f18381983e8b022f01a13039642e4eeb66c0f83950c8481a
|
4
|
+
data.tar.gz: a660ef5d63f9d768a089a557d501367fdabf4630891933a4cb09840e30d151ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f8461b3850835943925f23adf6fe69fc0ec9a05cd8785e31681679a3dbb87e17957d118003a6426fd2963641596e735cc84652eada6f257aeaba8e476c5f308
|
7
|
+
data.tar.gz: bb06eea03b236e50aa179bda90c04fe390f8485e8a3a8155584caeb1921c002361c46020a1f1a916ad381ad9f3847d2c7819082ff27260194530988f97f8670f
|
data/.rspec
ADDED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,19 +1,18 @@
|
|
1
1
|
source 'http://rubygems.org'
|
2
2
|
|
3
|
-
gem 'mqtt', '~> 0.
|
4
|
-
gem 'ansi', '~> 1.5', '>= 1.
|
5
|
-
gem 'mongo','~> 2.0
|
3
|
+
gem 'mqtt', '~> 0.5', '>= 0.5'
|
4
|
+
gem 'ansi', '~> 1.5', '>= 1.5'
|
5
|
+
gem 'mongo','~> 2.0'
|
6
6
|
|
7
7
|
group :development do
|
8
|
-
gem '
|
9
|
-
gem '
|
10
|
-
gem 'yard', '
|
11
|
-
gem '
|
12
|
-
gem 'bundler', '~> 1.0', '>= 1.0'
|
13
|
-
gem 'jeweler', '~> 2.0', '>= 2.0.1'
|
14
|
-
gem 'simplecov', '~> 0', '>= 0'
|
8
|
+
gem 'bundler', '~> 2.0'
|
9
|
+
gem 'jeweler', '~> 2.3'
|
10
|
+
gem 'yard', '>= 0.9.12'
|
11
|
+
gem 'simplecov', '>= 0.17'
|
15
12
|
end
|
16
13
|
|
17
14
|
group :test do
|
18
15
|
gem 'rake'
|
19
|
-
|
16
|
+
gem "rspec", '~> 3.8'
|
17
|
+
gem 'fuubar', '~> 2.4'
|
18
|
+
end
|
data/README.md
CHANGED
@@ -2,11 +2,18 @@
|
|
2
2
|
[![Build Status](https://travis-ci.org/nutella-framework/nutella_lib.rb.svg)](https://travis-ci.org/nutella-framework/nutella_lib.rb)
|
3
3
|
|
4
4
|
# nutella_lib.rb
|
5
|
-
nutella library for Ruby
|
5
|
+
nutella library for Ruby
|
6
6
|
|
7
|
-
|
7
|
+
## Getting started
|
8
8
|
Take a look at [basic-ruby-bot](https://github.com/nutella-framework/basic-ruby-bot) to see how to use nutella_lib to build a bot.
|
9
9
|
|
10
|
-
|
10
|
+
## Docs
|
11
11
|
Check out the docs at [http://www.rubydoc.info/gems/nutella_lib](http://www.rubydoc.info/gems/nutella_lib)
|
12
12
|
|
13
|
+
# Contributing
|
14
|
+
1. Clone repo
|
15
|
+
1. Bundle (`bundle`)
|
16
|
+
1. Run tests (`rake`)
|
17
|
+
1. Make changes
|
18
|
+
1. Run tests (`rake test`)
|
19
|
+
1. Open a PR
|
data/Rakefile
CHANGED
@@ -17,28 +17,20 @@ Jeweler::Tasks.new do |gem|
|
|
17
17
|
gem.name = "nutella_lib"
|
18
18
|
gem.homepage = "https://github.com/nutella-framework/nutella_lib.rb"
|
19
19
|
gem.license = "MIT"
|
20
|
-
gem.summary = %Q{nutella
|
21
|
-
gem.description = %Q{Implements the nutella protocol and exposes it natively
|
20
|
+
gem.summary = %Q{nutella library for ruby}
|
21
|
+
gem.description = %Q{Implements the nutella protocol and exposes it natively}
|
22
22
|
gem.email = "tebemis@gmail.com"
|
23
23
|
gem.authors = ["Alessandro Gnoli"]
|
24
24
|
# dependencies defined in Gemfile
|
25
25
|
end
|
26
26
|
Jeweler::RubygemsDotOrgTasks.new
|
27
27
|
|
28
|
-
require '
|
29
|
-
|
30
|
-
|
31
|
-
test.pattern = 'test/**/test_*.rb'
|
32
|
-
test.verbose = true
|
28
|
+
require 'rspec/core/rake_task'
|
29
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
30
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
33
31
|
end
|
34
32
|
|
35
|
-
desc "Code coverage detail"
|
36
|
-
task :simplecov do
|
37
|
-
ENV['COVERAGE'] = "true"
|
38
|
-
Rake::Task['test'].execute
|
39
|
-
end
|
40
|
-
|
41
|
-
task :default => :test
|
42
|
-
|
43
33
|
require 'yard'
|
44
34
|
YARD::Rake::YardocTask.new
|
35
|
+
|
36
|
+
task :default => :spec
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/lib/nutella_lib/app_core.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
module Nutella
|
2
|
-
|
2
|
+
# App-level APIs sub-module
|
3
3
|
module App
|
4
4
|
|
5
5
|
# Initializes this component as an application component
|
6
6
|
# @param [String] broker_hostname
|
7
|
+
# @param [String] app_id
|
7
8
|
# @param [String] component_id
|
8
9
|
def self.init( broker_hostname, app_id, component_id )
|
9
10
|
Nutella.app_id = app_id
|
@@ -12,6 +13,7 @@ module Nutella
|
|
12
13
|
Nutella.resource_id = nil
|
13
14
|
Nutella.mongo_host = broker_hostname
|
14
15
|
Nutella.mqtt = SimpleMQTTClient.new broker_hostname
|
16
|
+
|
15
17
|
# Start pinging
|
16
18
|
Nutella.net.start_pinging
|
17
19
|
# Fetch the `run_id`s list for this application and subscribe to its updates
|
data/lib/nutella_lib/core.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# This module is the wrapper around the whole nutella library.
|
2
2
|
module Nutella
|
3
3
|
|
4
|
-
|
5
4
|
# Initializes this component as a run component
|
6
|
-
# @param [String] run_id
|
7
5
|
# @param [String] broker_hostname
|
6
|
+
# @param [String] app_id
|
7
|
+
# @param [String] run_id
|
8
8
|
# @param [String] component_id
|
9
9
|
def self.init( broker_hostname, app_id, run_id, component_id )
|
10
10
|
@app_id = app_id
|
@@ -17,7 +17,6 @@ module Nutella
|
|
17
17
|
Nutella.net.start_pinging
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
20
|
# Variables accessors
|
22
21
|
def self.app_id; @app_id end
|
23
22
|
def self.run_id; @run_id end
|
@@ -45,16 +44,16 @@ module Nutella
|
|
45
44
|
def self.mqtt=(val); @mqtt=val; end
|
46
45
|
def self.ping_thread=(val); @ping_thread=val; end
|
47
46
|
|
48
|
-
|
49
|
-
# Accessors for sub-modules
|
47
|
+
# Accessors for app and framework sub-modules
|
50
48
|
def self.app; Nutella::App; end
|
49
|
+
def self.f; Nutella::Framework; end
|
50
|
+
# Accessors run-level sub-modules
|
51
51
|
def self.net; Nutella::Net; end
|
52
52
|
def self.log; Nutella::Log; end
|
53
53
|
def self.persist; Nutella::Persist; end
|
54
54
|
|
55
55
|
|
56
|
-
# Utility
|
57
|
-
|
56
|
+
# Utility methods
|
58
57
|
|
59
58
|
# Parse command line arguments for run level components
|
60
59
|
#
|
@@ -85,8 +84,4 @@ module Nutella
|
|
85
84
|
@resource_id = resource_id
|
86
85
|
end
|
87
86
|
|
88
|
-
end
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
87
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Nutella
|
2
|
+
# Framework-level APIs sub-module
|
3
|
+
module Framework
|
4
|
+
|
5
|
+
# Initializes this component as a framework component
|
6
|
+
# @param [String] broker_hostname
|
7
|
+
# @param [String] component_id
|
8
|
+
def self.init( broker_hostname, component_id )
|
9
|
+
Nutella.app_id = nil
|
10
|
+
Nutella.run_id = nil
|
11
|
+
Nutella.component_id = component_id
|
12
|
+
Nutella.resource_id = nil
|
13
|
+
Nutella.mongo_host = broker_hostname
|
14
|
+
Nutella.mqtt = SimpleMQTTClient.new broker_hostname
|
15
|
+
# Start pinging
|
16
|
+
Nutella.net.start_pinging
|
17
|
+
# Fetch the `run_id`s list for this application and subscribe to its updates
|
18
|
+
net.async_request('app_runs_list', lambda { |res| Nutella.app.app_runs_list = res })
|
19
|
+
self.net.subscribe('app_runs_list', lambda {|message, _| Nutella.app.app_runs_list = message })
|
20
|
+
end
|
21
|
+
|
22
|
+
# Accessors for sub-modules
|
23
|
+
def self.net; Nutella::Framework::Net; end
|
24
|
+
def self.log; Nutella::Framework::Log; end
|
25
|
+
def self.persist; Nutella::Framework::Persist; end
|
26
|
+
|
27
|
+
|
28
|
+
# Utility functions
|
29
|
+
|
30
|
+
# Extracts the component name from the folder where the code for this component is located
|
31
|
+
#
|
32
|
+
# @return [String] the component name
|
33
|
+
def self.extract_component_id
|
34
|
+
Nutella.extract_component_id
|
35
|
+
end
|
36
|
+
|
37
|
+
# Sets the resource id
|
38
|
+
#
|
39
|
+
# @param [String] resource_id the resource id (i.e. the particular instance of this component)
|
40
|
+
def self.set_resource_id( resource_id )
|
41
|
+
Nutella.set_resource_id resource_id
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'ansi'
|
2
|
+
|
3
|
+
module Nutella
|
4
|
+
|
5
|
+
module Framework
|
6
|
+
|
7
|
+
module Log
|
8
|
+
|
9
|
+
def self.debug(message, code=nil)
|
10
|
+
puts( ANSI.cyan + message + ANSI.reset )
|
11
|
+
Nutella.f.net.publish( 'logging', log_to_json(message, code, __method__) )
|
12
|
+
code
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.info(message, code=nil)
|
16
|
+
puts( message )
|
17
|
+
Nutella.f.net.publish( 'logging', log_to_json(message, code, __method__) )
|
18
|
+
code
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.success(message, code=nil)
|
22
|
+
puts( ANSI.green + message + ANSI.reset )
|
23
|
+
Nutella.f.net.publish( 'logging', log_to_json(message, code, __method__) )
|
24
|
+
code
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.warn(message, code=nil)
|
28
|
+
puts( ANSI.yellow + message + ANSI.reset )
|
29
|
+
Nutella.f.net.publish( 'logging', log_to_json(message, code, __method__) )
|
30
|
+
code
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.error(message, code=nil)
|
34
|
+
puts( ANSI.red + message + ANSI.reset )
|
35
|
+
Nutella.f.net.publish( 'logging', log_to_json(message, code, __method__) )
|
36
|
+
code
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def self.log_to_json( message, code, level)
|
42
|
+
code.nil? ? {level: level, message: message} : {level: level, message: message, code: code}
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|