tengine_core 0.5.39 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. data/Gemfile +1 -37
  2. data/Gemfile.lock +59 -61
  3. data/README.md +8 -6
  4. data/bin/create_indexes_for_tengine_core +18 -0
  5. data/bin/tengined +3 -3
  6. data/examples/list.txt +36 -0
  7. data/examples/uc08_if_both_a_and_b_occurs.rb +7 -1
  8. data/examples/uc20_fire_with_properties.rb +19 -0
  9. data/examples/uc21_fire_with_same_key.rb +23 -0
  10. data/examples/uc22_fire_with_source_name.rb +17 -0
  11. data/examples/uc23_fire_with_level.rb +19 -0
  12. data/examples/uc24_fire_with_level_key.rb +19 -0
  13. data/examples/uc30_local_variables.rb +28 -0
  14. data/examples/uc31_instance_variables.rb +35 -0
  15. data/examples/uc32_class_variables.rb +20 -0
  16. data/examples/uc33_statics.rb +20 -0
  17. data/examples2/uc30_local_variables.rb +55 -0
  18. data/examples2/uc31_instance_variables.rb +46 -0
  19. data/examples2/uc32_class_variables.rb +22 -0
  20. data/examples2/uc33_statics.rb +23 -0
  21. data/lib/tengine/core/bootstrap.rb +1 -1
  22. data/lib/tengine/core/config/atd.rb +0 -3
  23. data/lib/tengine/core/config/core.rb +21 -20
  24. data/lib/tengine/core/config/heartbeat_watcher.rb +0 -3
  25. data/lib/tengine/core/driveable.rb +34 -12
  26. data/lib/tengine/core/driver.rb +22 -9
  27. data/lib/tengine/core/dsl_evaluator.rb +2 -15
  28. data/lib/tengine/core/dsl_filter_def.rb +40 -0
  29. data/lib/tengine/core/dsl_loader.rb +1 -1
  30. data/lib/tengine/core/event.rb +44 -29
  31. data/lib/tengine/core/event/finder.rb +1 -1
  32. data/lib/tengine/core/event_exception_reportable.rb +7 -10
  33. data/lib/tengine/core/event_wrapper.rb +1 -1
  34. data/lib/tengine/core/find_by_name.rb +1 -1
  35. data/lib/tengine/core/handler.rb +14 -4
  36. data/lib/tengine/core/handler_path.rb +1 -1
  37. data/lib/tengine/core/heartbeat_watcher.rb +3 -2
  38. data/lib/tengine/core/kernel.rb +22 -6
  39. data/lib/tengine/core/mongoid_fix.rb +2 -1
  40. data/lib/tengine/core/mutex.rb +22 -8
  41. data/lib/tengine/core/optimistic_lock.rb +6 -6
  42. data/lib/tengine/core/safe_updatable.rb +24 -26
  43. data/lib/tengine/core/schedule.rb +2 -2
  44. data/lib/tengine/core/scheduler.rb +5 -4
  45. data/lib/tengine/core/session.rb +14 -0
  46. data/lib/tengine/core/session_wrapper.rb +20 -4
  47. data/lib/tengine/core/setting.rb +3 -3
  48. data/lib/tengine/rspec/extension.rb +6 -8
  49. metadata +156 -171
  50. data/.document +0 -5
  51. data/.rspec +0 -1
  52. data/Rakefile +0 -44
  53. data/VERSION +0 -1
  54. data/lib/tengine/core/connection_test/.gitignore +0 -1
  55. data/spec/factories/tengine_core_drivers.rb +0 -10
  56. data/spec/factories/tengine_core_events.rb +0 -14
  57. data/spec/factories/tengine_core_handler_paths.rb +0 -9
  58. data/spec/factories/tengine_core_handlers.rb +0 -9
  59. data/spec/factories/tengine_core_sessions.rb +0 -9
  60. data/spec/mongoid.yml +0 -35
  61. data/spec/spec_helper.rb +0 -48
  62. data/spec/support/mongo_index_key_log.rb +0 -91
  63. data/spec/tengine/core/bootstrap_spec.rb +0 -278
  64. data/spec/tengine/core/bugfix/bind_dsl_file_in_multi_byte_dir_spec.rb +0 -21
  65. data/spec/tengine/core/bugfix/enabled_on_activation_spec.rb +0 -112
  66. data/spec/tengine/core/bugfix/receive_event_spec.rb +0 -133
  67. data/spec/tengine/core/bugfix/use_dsl_version_method.rb +0 -12
  68. data/spec/tengine/core/bugfix/use_dsl_version_method_spec.rb +0 -28
  69. data/spec/tengine/core/bugfix/use_event_in_handler_dsl.rb +0 -11
  70. data/spec/tengine/core/bugfix//351/235/236ACSII/343/201/256/343/203/206/343/202/231/343/202/243/343/203/254/343/202/257/343/203/210/343/203/252/345/220/215/source_location_encoding.rb +0 -35
  71. data/spec/tengine/core/bugfix//351/235/236ACSII/343/201/256/343/203/206/343/202/231/343/202/243/343/203/254/343/202/257/343/203/210/343/203/252/345/220/215//351/235/236ASCII/343/201/256/343/203/225/343/202/241/343/202/244/343/203/253/345/220/215_dsl.rb +0 -38
  72. data/spec/tengine/core/bugfix//351/235/236ACSII/343/201/256/343/203/207/343/202/243/343/203/254/343/202/257/343/203/210/343/203/252/345/220/215/source_location_encoding.rb +0 -35
  73. data/spec/tengine/core/bugfix//351/235/236ACSII/343/201/256/343/203/207/343/202/243/343/203/254/343/202/257/343/203/210/343/203/252/345/220/215//351/235/236ASCII/343/201/256/343/203/225/343/202/241/343/202/244/343/203/253/345/220/215_dsl.rb +0 -38
  74. data/spec/tengine/core/config/atd_spec.rb +0 -62
  75. data/spec/tengine/core/config/core_spec.rb +0 -479
  76. data/spec/tengine/core/config/heartbeat_watcher_spec.rb +0 -62
  77. data/spec/tengine/core/config/syntax_error_in_erb.yml.erb +0 -13
  78. data/spec/tengine/core/config/wrong_category_name.yml.erb +0 -13
  79. data/spec/tengine/core/config/wrong_field_name.yml.erb +0 -12
  80. data/spec/tengine/core/config/wrong_yaml.yml.erb +0 -13
  81. data/spec/tengine/core/config_spec/another_port.yml +0 -54
  82. data/spec/tengine/core/config_spec/config_with_dir_absolute_load_path.yml +0 -16
  83. data/spec/tengine/core/config_spec/config_with_dir_relative_load_path.yml +0 -16
  84. data/spec/tengine/core/config_spec/config_with_file_absolute_load_path.yml +0 -16
  85. data/spec/tengine/core/config_spec/config_with_file_relative_load_path.yml +0 -16
  86. data/spec/tengine/core/config_spec/log_config_spec.rb +0 -245
  87. data/spec/tengine/core/driveable_spec.rb +0 -240
  88. data/spec/tengine/core/driver_spec.rb +0 -159
  89. data/spec/tengine/core/dsl_loader_spec.rb +0 -172
  90. data/spec/tengine/core/dsls/uc08_if_both_a_and_b_occurs_spec.rb +0 -35
  91. data/spec/tengine/core/dsls/uc10_if_the_event_occurs_at_the_server_spec.rb +0 -58
  92. data/spec/tengine/core/dsls/uc50_commit_event_at_first_spec.rb +0 -29
  93. data/spec/tengine/core/dsls/uc52_commit_event_after_all_handler_submit_spec.rb +0 -33
  94. data/spec/tengine/core/dsls/uc52_never_commit_event_unless_all_handler_submit_spec.rb +0 -38
  95. data/spec/tengine/core/dsls/uc53_submit_outside_of_handler_spec.rb +0 -37
  96. data/spec/tengine/core/dsls/uc60_event_in_handler_spec.rb +0 -31
  97. data/spec/tengine/core/dsls/uc61_event_outside_of_handler_spec.rb +0 -37
  98. data/spec/tengine/core/dsls/uc62_session_in_driver_spec.rb +0 -36
  99. data/spec/tengine/core/dsls/uc63_session_outside_of_driver_spec.rb +0 -35
  100. data/spec/tengine/core/dsls/uc64_safety_countup_spec.rb +0 -134
  101. data/spec/tengine/core/dsls/uc70_driver_enabled_on_activation_spec.rb +0 -39
  102. data/spec/tengine/core/dsls/uc71_driver_disabled_on_activation_spec.rb +0 -36
  103. data/spec/tengine/core/dsls/uc72_setup_eventmachine_spec.rb +0 -39
  104. data/spec/tengine/core/dsls/uc80_raise_io_error_spec.rb +0 -53
  105. data/spec/tengine/core/dsls/uc81_raise_runtime_error_spec.rb +0 -49
  106. data/spec/tengine/core/event/finder_spec.rb +0 -136
  107. data/spec/tengine/core/event_exception_reportable_spec.rb +0 -33
  108. data/spec/tengine/core/event_spec.rb +0 -161
  109. data/spec/tengine/core/event_wrapper_spec.rb +0 -35
  110. data/spec/tengine/core/handler_path_spec.rb +0 -87
  111. data/spec/tengine/core/handler_spec.rb +0 -190
  112. data/spec/tengine/core/heartbeat_watcher_spec.rb +0 -131
  113. data/spec/tengine/core/io_to_logger_spec.rb +0 -30
  114. data/spec/tengine/core/kernel_spec.rb +0 -902
  115. data/spec/tengine/core/mongodb_spec.rb +0 -12
  116. data/spec/tengine/core/mongoid_fix_spec.rb +0 -52
  117. data/spec/tengine/core/mutex_spec.rb +0 -201
  118. data/spec/tengine/core/optimistic_lock_spec.rb +0 -55
  119. data/spec/tengine/core/scheculer_spec.rb +0 -121
  120. data/spec/tengine/core/selectable_attr_spec.rb +0 -30
  121. data/spec/tengine/core/session_spec.rb +0 -104
  122. data/spec/tengine/core/setting_spec.rb +0 -79
  123. data/spec/tengine/core_spec.rb +0 -13
  124. data/spec/tengine_spec.rb +0 -14
  125. data/tengine_core.gemspec +0 -251
  126. data/tmp/log/.gitignore +0 -1
  127. data/tmp/tengined_status/.gitignore +0 -1
data/Gemfile CHANGED
@@ -1,40 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  source "http://rubygems.org"
3
3
 
4
- # Add dependencies required to use your gem here.
5
- # Example:
6
- # gem "activesupport", ">= 2.3.5"
7
-
8
- gem "activesupport", "~> 3.1.0"
9
- gem "activemodel" , "~> 3.1.0"
10
-
11
- gem "selectable_attr", "~> 0.3.15"
12
-
13
- gem "bson" , "~> 1.5.2"
14
- gem "bson_ext", "~> 1.5.2"
15
- gem "mongo" , "~> 1.5.2"
16
-
17
- gem "mongoid", "~> 2.3.3"
18
-
19
- gem "tengine_support", "~> 0.3.27"
20
- gem "tengine_event", "~> 0.4.9"
21
-
22
- gem "daemons", "~> 1.1.4"
23
-
24
- # Add dependencies to develop your gem here.
25
- # Include everything needed to run rake, tests, features, etc.
26
- group :development do
27
- gem "rspec", "~> 2.6.0"
28
- gem "factory_girl", "~> 2.1.2"
29
- gem "yard", "~> 0.7.2"
30
- gem "bundler", "~> 1.1.3"
31
- gem "jeweler", "~> 1.6.4"
32
- # gem "rcov", ">= 0"
33
- gem "simplecov", "~> 0.5.3"
34
- gem "ZenTest", "~> 4.6.2"
35
-
36
- # for markdown
37
- gem 'rdiscount'
38
- gem 'kramdown'
39
-
40
- end
4
+ gemspec
data/Gemfile.lock CHANGED
@@ -1,12 +1,24 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ tengine_core (1.1.0)
5
+ activemodel (>= 3.1.0)
6
+ activesupport (>= 3.1.0)
7
+ daemons (~> 1.1.4)
8
+ mongoid (~> 3.0.0)
9
+ selectable_attr (~> 0.3.15)
10
+ tengine_event (~> 1.1.0)
11
+ tengine_support (~> 1.1.0)
12
+
1
13
  GEM
2
14
  remote: http://rubygems.org/
3
15
  specs:
4
- ZenTest (4.6.2)
5
- activemodel (3.1.4)
6
- activesupport (= 3.1.4)
16
+ ZenTest (4.8.2)
17
+ activemodel (3.2.8)
18
+ activesupport (= 3.2.8)
7
19
  builder (~> 3.0.0)
20
+ activesupport (3.2.8)
8
21
  i18n (~> 0.6)
9
- activesupport (3.1.4)
10
22
  multi_json (~> 1.0)
11
23
  amq-client (0.8.7)
12
24
  amq-protocol (>= 0.8.4)
@@ -16,80 +28,66 @@ GEM
16
28
  amq-client (~> 0.8.7)
17
29
  amq-protocol (~> 0.8.4)
18
30
  eventmachine
19
- bson (1.5.2)
20
- bson_ext (1.5.2)
21
- bson (= 1.5.2)
22
- builder (3.0.0)
23
- daemons (1.1.8)
31
+ autotest (4.4.6)
32
+ ZenTest (>= 4.4.1)
33
+ builder (3.0.4)
34
+ daemons (1.1.9)
24
35
  diff-lcs (1.1.3)
25
- eventmachine (0.12.10)
26
- factory_girl (2.1.2)
27
- activesupport
28
- git (1.2.5)
29
- i18n (0.6.0)
30
- jeweler (1.6.4)
31
- bundler (~> 1.0)
32
- git (>= 1.2.5)
33
- rake
34
- kramdown (0.13.5)
35
- macaddr (1.5.0)
36
- systemu (>= 2.4.0)
37
- mongo (1.5.2)
38
- bson (= 1.5.2)
39
- mongoid (2.3.5)
40
- activemodel (~> 3.1.0)
41
- mongo (~> 1.3)
36
+ eventmachine (1.0.0)
37
+ factory_girl (3.3.0)
38
+ activesupport (>= 3.0.0)
39
+ i18n (0.6.1)
40
+ kramdown (0.14.0)
41
+ macaddr (1.6.1)
42
+ systemu (~> 2.5.0)
43
+ mongoid (3.0.15)
44
+ activemodel (~> 3.1)
45
+ moped (~> 1.1)
46
+ origin (~> 1.0)
42
47
  tzinfo (~> 0.3.22)
43
- multi_json (1.0.4)
48
+ moped (1.3.1)
49
+ multi_json (1.3.6)
50
+ origin (1.0.11)
44
51
  rake (0.9.2.2)
45
52
  rdiscount (1.6.8)
46
- rspec (2.6.0)
47
- rspec-core (~> 2.6.0)
48
- rspec-expectations (~> 2.6.0)
49
- rspec-mocks (~> 2.6.0)
50
- rspec-core (2.6.4)
51
- rspec-expectations (2.6.0)
52
- diff-lcs (~> 1.1.2)
53
- rspec-mocks (2.6.0)
54
- selectable_attr (0.3.15)
53
+ rspec (2.10.0)
54
+ rspec-core (~> 2.10.0)
55
+ rspec-expectations (~> 2.10.0)
56
+ rspec-mocks (~> 2.10.0)
57
+ rspec-core (2.10.1)
58
+ rspec-expectations (2.10.0)
59
+ diff-lcs (~> 1.1.3)
60
+ rspec-mocks (2.10.1)
61
+ selectable_attr (0.3.17)
55
62
  i18n
56
- simplecov (0.5.4)
57
- multi_json (~> 1.0.3)
63
+ simplecov (0.6.4)
64
+ multi_json (~> 1.0)
58
65
  simplecov-html (~> 0.5.3)
59
66
  simplecov-html (0.5.3)
60
- systemu (2.5.0)
61
- tengine_event (0.4.9)
67
+ systemu (2.5.2)
68
+ tengine_event (1.1.0)
62
69
  activesupport (>= 3.0.0)
63
70
  amqp (~> 0.8.0)
64
- tengine_support (>= 0.3.27)
71
+ tengine_support (~> 1.1.0)
65
72
  uuid (~> 2.3.4)
66
- tengine_support (0.3.27)
73
+ tengine_support (1.1.0)
67
74
  activesupport (>= 3.0.0)
68
- tzinfo (0.3.32)
75
+ tzinfo (0.3.35)
69
76
  uuid (2.3.5)
70
77
  macaddr (~> 1.0)
71
- yard (0.7.5)
78
+ yard (0.8.2.1)
72
79
 
73
80
  PLATFORMS
74
81
  ruby
75
82
 
76
83
  DEPENDENCIES
77
- ZenTest (~> 4.6.2)
78
- activemodel (~> 3.1.0)
79
- activesupport (~> 3.1.0)
80
- bson (~> 1.5.2)
81
- bson_ext (~> 1.5.2)
82
- bundler (~> 1.1.3)
83
- daemons (~> 1.1.4)
84
- factory_girl (~> 2.1.2)
85
- jeweler (~> 1.6.4)
84
+ autotest
85
+ bundler
86
+ factory_girl (~> 3.3.0)
86
87
  kramdown
87
- mongo (~> 1.5.2)
88
- mongoid (~> 2.3.3)
88
+ rake (~> 0.9.2.2)
89
89
  rdiscount
90
- rspec (~> 2.6.0)
91
- selectable_attr (~> 0.3.15)
92
- simplecov (~> 0.5.3)
93
- tengine_event (~> 0.4.9)
94
- tengine_support (~> 0.3.27)
95
- yard (~> 0.7.2)
90
+ rspec (~> 2.10.0)
91
+ simplecov (~> 0.6.4)
92
+ tengine_core!
93
+ yard (~> 0.8.1)
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # tengine_core
2
2
 
3
- tengineはデータセンター運用のためのフレームワークおよび実行環境です。
3
+ Tengine frameworkとは、分散環境のリソース・マネジメントとジョブ制御を統括的に扱う運用エンジンです。
4
+ Tengine frameworkを利用することで"動的に変化するデータセンター(Programmable DataCenter)"を実現することができます。
5
+
4
6
 
5
7
  ## 概要
6
8
 
@@ -15,10 +17,10 @@ tengineはデータセンター運用のためのフレームワークおよび
15
17
  ## インストールとセットアップ
16
18
  ### インストール
17
19
 
18
- * rabbitmqのインストール
20
+ * RabbitMQのインストール
19
21
  * MongoDBのインストール
20
22
 
21
- gem install tengine_core --source http://bts.tenginefw.com/gemserver
23
+ gem install tengine_core
22
24
 
23
25
  ### セットアップ
24
26
 
@@ -32,11 +34,11 @@ tengineはデータセンター運用のためのフレームワークおよび
32
34
 
33
35
  DSLを使用するためのAPIについては以下のモジュールのAPIを参照してください。
34
36
  [Tengine::Core::DslLoader](Tengine/Core/DslLoader.html)
35
- [Tengine::Core::DslBinder](Tengine/Core/DslBinder.html)
37
+ [Tengine::Core::DslEvaluator](Tengine/Core/DslEvaluator.html)
36
38
 
37
39
 
38
40
  ## Contributing to tengine_core
39
-
41
+
40
42
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
41
43
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
42
44
  * Fork the project
@@ -51,4 +53,4 @@ tengine_event is distributed under the MPL2.0 or LGPLv3 or the dual license of M
51
53
 
52
54
  ## Copyright
53
55
 
54
- Copyright (c) 2012 Groovenauts, Inc.
56
+ Copyright (c) 2012 Groovenauts, Inc.
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+
4
+ # Use to create indexes. Sample is below.
5
+ # create_indexes_for_tengine_core localhost:27017/tengine_production
6
+ #
7
+ # Default options
8
+ # hostname localhost
9
+ # port 27017
10
+ # database tengine_production
11
+ #
12
+ require 'tengine_support'
13
+ require 'tengine_core'
14
+
15
+ include Tengine::Support::Mongoid
16
+
17
+ target = File.expand_path('../lib', File.dirname(__FILE__))
18
+ Tengine::Support::Mongoid.create_indexes(target, ARGV.shift)
data/bin/tengined CHANGED
@@ -171,9 +171,9 @@ run do
171
171
  require 'mongoid'
172
172
  require File.expand_path('./lib/tengine_core', tengined_root)
173
173
  require 'tengine/core/mongoid_fix'
174
- Mongoid.config.from_hash(config[:db])
175
- Mongoid.config.option(:persist_in_safe_mode, :default => true)
176
- Mongoid.config.option(:autocreate_indexes, :default => true) # http://mongoid.org/docs/indexing.html
174
+ Mongoid.configure do |c|
175
+ c.send :load_configuration, config[:db]
176
+ end
177
177
  require 'amqp'
178
178
  Mongoid.logger = AMQP::Session.logger = Tengine.logger
179
179
  Tengine::Core::MethodTraceable.disabled = !@__config__[:verbose] # Tengine::Core::Bootstrapが動く前に設定しないと余計なログが出ます
data/examples/list.txt ADDED
@@ -0,0 +1,36 @@
1
+ 01 最もシンプルなイベントハンドラ
2
+ 02 イベントが発生したら新たなイベントを発火する
3
+ 03 一つのイベントに対して処理Aと処理Bを実行する
4
+
5
+ 08 イベントAとイベントBが発生したら処理を実行する
6
+
7
+ 10 特定のサーバからのイベントが発生した場合のみ処理を実行する
8
+
9
+ 20 :properties指定で発火する
10
+ 21 :key指定で発火する
11
+ 22 :source_name指定で発火する
12
+ 23 :level指定で発火する
13
+ 24 :level_key指定で発火する
14
+
15
+ 30: ローカル変数を参照する
16
+ 31: インスタンス変数を参照する
17
+ 32: クラス変数を参照する
18
+ 33: 定数を参照する
19
+
20
+ 50 ack_policy(:at_first, ...) の例
21
+ 51 ack_policy(:at_first_submit, ...) の例
22
+ 52 ack_policy(:after_all_handler_submit, ...) でACKを返す例
23
+ 53 ack_policy(:after_all_handler_submit, ...) でACKを返さない例
24
+
25
+ 60 eventメソッドを使って受け取ったイベントを取得する
26
+ 61 eventメソッドをハンドラ外で使用して例外が発生する例
27
+ 62 ドライバ内では sessionメソッドで取得できるセッションに対してupdateメソッドを使ってドライバのセッションに情報を格納できる
28
+ 63 sessionメソッドをドライバ外で使用して例外が発生する例
29
+ 64 driver62と違って、複数のプロセスが同時に数を数えても正しく+1していきます
30
+
31
+ 70 アクティベーション時にイベントドライバを有効な状態にする例
32
+ 71 アクティベーション時にイベントドライバを無効な状態にする例
33
+ 72 アクティベーション時にEventMachineの初期化を行う例
34
+
35
+ 80 イベントハンドリング中にIOErrorが発生するハンドラ
36
+ 81 イベントハンドリング中にRuntimeErrorが発生するハンドラ
@@ -4,8 +4,14 @@ require 'tengine/core'
4
4
  driver :driver08 do
5
5
 
6
6
  # イベントAとイベントBが発生したら処理を実行する
7
- on :event08_a & :event_08_b do
7
+ on :event08_a & :event08_b do
8
8
  puts "handler08"
9
9
  end
10
10
 
11
+ # イベントAとイベントBが発生したら処理を実行する
12
+ on :event08_c do
13
+ puts "clear session"
14
+ session.clear!
15
+ end
16
+
11
17
  end
@@ -0,0 +1,19 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'tengine/core'
4
+
5
+ driver :driver20 do
6
+
7
+ # イベントが発生したら:propertiesを指定してイベントを発火する
8
+ on:event20_1 do
9
+ puts "handler20_1"
10
+ fire(:event20_2, :properties => {:foo => 'bar', :baz => 1})
11
+ end
12
+
13
+ on:event20_2 do
14
+ puts event[:foo].inspect
15
+ puts event[:baz].inspect
16
+ puts event.properties.inspect
17
+ end
18
+
19
+ end
@@ -0,0 +1,23 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'tengine/core'
4
+
5
+ driver :driver21 do
6
+
7
+ # イベントが発生したら:propertiesを指定してイベントを発火する
8
+ on:event21_1 do
9
+ puts "handler21_1"
10
+ fire(:event21_2, :key => "event21_2-key" + Time.now.strftime("%Y/%m/%d %H:%M"))
11
+ end
12
+
13
+ # 日時分まで同じ時刻ならば、一度目の fireでは正しくイベントが処理されて、
14
+ # 標準出力に handler21_2 と出力されますが、
15
+ # 2度目以降は、キーが重複しているため処理されず以下のようなエラーメッセージが出力されます。
16
+ #
17
+ # 2012-05-15T22:57:07+09:00 WARN failed to store an event.
18
+ # [Mongo::OperationFailure] 11000: E11000 duplicate key error index: tengine_production.tengine_core_events.$key_1 dup key: { : "event21_2-key2012/05/15 22:57" }
19
+ on:event21_2 do
20
+ puts "handler21_2"
21
+ end
22
+
23
+ end
@@ -0,0 +1,17 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'tengine/core'
4
+
5
+ driver :driver22 do
6
+
7
+ # イベントが発生したら:source_nameを指定してイベントを発火する
8
+ on:event22_1 do
9
+ puts "handler22_1"
10
+ fire(:event22_2, :source_name => "test_source01")
11
+ end
12
+
13
+ on:event22_2 do
14
+ puts event.source_name # test_source01
15
+ end
16
+
17
+ end
@@ -0,0 +1,19 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'tengine/core'
4
+
5
+ driver :driver23 do
6
+
7
+ # イベントが発生したら:propertiesを指定してイベントを発火する
8
+ on:event23 do
9
+ puts "handler23"
10
+ fire(:event23_1, :level => 1)
11
+ end
12
+
13
+ on(:event23_1){ puts "handler23_1"; fire(:event23_2, :level => 2) }
14
+ on(:event23_2){ puts "handler23_2"; fire(:event23_3, :level => 3) }
15
+ on(:event23_3){ puts "handler23_3"; fire(:event23_4, :level => 4) }
16
+ on(:event23_4){ puts "handler23_4"; fire(:event23_5, :level => 5) }
17
+ on(:event23_5){ puts "handler23_5"; fire(:event23_6, :level => 6) } # [ArgumentError] Invalid level 6. It must be one of [0, 1, 2, 3, 4, 5]
18
+ on(:event23_6){ puts "handler23_6" }
19
+ end
@@ -0,0 +1,19 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'tengine/core'
4
+
5
+ driver :driver24 do
6
+
7
+ # イベントが発生したら:propertiesを指定してイベントを発火する
8
+ on:event24 do
9
+ puts "handler24"
10
+ fire(:event24_0, :level_key => :debug)
11
+ end
12
+
13
+ on(:event24_0){ puts "handler24_0"; fire(:event24_1, :level_key => :info) }
14
+ on(:event24_1){ puts "handler24_1"; fire(:event24_2, :level_key => :warn) }
15
+ on(:event24_2){ puts "handler24_2"; fire(:event24_3, :level_key => :error) }
16
+ on(:event24_3){ puts "handler24_3"; fire(:event24_4, :level_key => :fatal) }
17
+ on(:event24_4){ puts "handler24_4"; fire(:event24_5, :level_key => :urgent) } # [ArgumentError] Invalid level_key :urgent. It must be one of [:gr_heartbeat, :debug, :info, :warn, :error, :fatal]
18
+ on(:event24_5){ puts "handler24_5" }
19
+ end
@@ -0,0 +1,28 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'tengine/core'
3
+
4
+ # driverメソッドによるドライバ定義でローカル変数を使用する例。
5
+ #
6
+ # Rubyの通常のブロックと同じように、ブロックの外で定義されたローカル変数は
7
+ # ブロック内からアクセス可能です。
8
+
9
+ # lvar1の定義
10
+ lvar1 = "outside of driver"
11
+
12
+ driver :driver30 do
13
+
14
+ # lvar2の定義
15
+ lvar2 = "outside of handler"
16
+ puts "#{__FILE__}##{__LINE__}"
17
+ # lvar1へのアクセス
18
+ puts lvar1 # => outside of driver
19
+
20
+ on:event30 do
21
+ puts "#{__FILE__}##{__LINE__}"
22
+ # lvar1へのアクセス
23
+ puts lvar1 # => outside of driver
24
+ # lvar2へのアクセス
25
+ puts lvar2 # => outside of handler
26
+ end
27
+
28
+ end