jets 1.8.6 → 1.8.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1363b9c561ffcb14e1c83b917eb1eed1fbaf4cf19c6a1a7d2346c7352a87c079
4
- data.tar.gz: 7b1de276009c38da3e0fb2b684b231726aa2d268ba9e0e8c8452f402cfa38a69
3
+ metadata.gz: '0431191b2ee4bd922dfbb1d04ded0d27c80b9d7f5fbe5b8ed0d82fb818805f06'
4
+ data.tar.gz: 7be272e9d21a1d65d0bfe1cbcce921f8492f37af1763fb183e06909f17cb830a
5
5
  SHA512:
6
- metadata.gz: 477e804b7ef7079d6a8d2ccc0dbcf47cd674b4c031ab66ba16378a84a796435e708ec39fdf5407f4a95459bb4611096b10a58db55a15c33d1e23545da20cc59a
7
- data.tar.gz: b053eb4f120db2dd750bb63fcb87914fb873a372c6157d85cf4aa6cb60949c65f14aee4a473ae85e2dd3f89f9b6cf44d852836558d3027b0b7df400029b9f610
6
+ metadata.gz: 3e57ef81615d661a25d12e0503fd77b5622cdf2f78c837835aefdb6e26a261882b29b4b8c6226c1ede13561680986064a91dbe3ccb18c4df895ab30d5448acf0
7
+ data.tar.gz: a67756c55f8c52ff1f90279da7ed9dc156f5dbba676c5139b7c951aa5dde01a77c61fc576f85fa60ad8be24658e405d162105cc98f4a0a5dfff89c9ca47f8167
data/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
5
5
 
6
+ ## [1.8.7]
7
+ - #204 from CodingAnarchy/boot-missing-env
8
+ - #205 rename to rule_event
9
+ - add ref helper method
10
+ - deprecate: events_rule and event_pattern
11
+
6
12
  ## [1.8.6]
7
13
  - #202 fix on_aws detection when using cloud9 hostname. Fixes #201
8
14
  - user friendly error message when s3 bucket name has already been taken
data/README.md CHANGED
@@ -11,7 +11,7 @@ Ruby and Lambda splat out a baby and that child's name is [Jets](http://rubyonje
11
11
 
12
12
  **Upgrading**: If you are upgrading Jets, please check on the [Upgrading Notes](http://rubyonjets.com/docs/upgrading/).
13
13
 
14
- ## What is Jets?
14
+ ## What is Ruby on Jets?
15
15
 
16
16
  Jets is a Ruby Serverless Framework. Jets allows you to create serverless applications with a beautiful language: Ruby. It includes everything required to build an application and deploy it to AWS Lambda.
17
17
 
data/lib/jets/booter.rb CHANGED
@@ -112,7 +112,7 @@ class Jets::Booter
112
112
  ActiveRecord::Tasks::DatabaseTasks.database_configuration = db_configs
113
113
 
114
114
  current_config = db_configs[Jets.env]
115
- if current_config.empty?
115
+ if current_config.blank?
116
116
  abort("ERROR: config/database.yml exists but no environment section configured for #{Jets.env}")
117
117
  end
118
118
  # Using ActiveRecord rake tasks outside of Rails, so we need to set up the
data/lib/jets/job/dsl.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require 'active_support'
2
+ require 'active_support/core_ext/class'
3
+
1
4
  # Jets::Job::Base < Jets::Lambda::Functions
2
5
  # Both Jets::Job::Base and Jets::Lambda::Functions have Dsl modules included.
3
6
  # So the Jets::Job::Dsl overrides some of the Jets::Lambda::Functions behavior.
@@ -8,12 +11,12 @@
8
11
  #
9
12
  module Jets::Job::Dsl
10
13
  extend ActiveSupport::Concern
11
- autoload :CloudwatchEvent, "jets/job/dsl/cloudwatch_event"
12
14
  autoload :DynamodbEvent, "jets/job/dsl/dynamodb_event"
13
15
  autoload :EventSourceMapping, "jets/job/dsl/event_source_mapping" # base for sqs_event, etc
14
16
  autoload :IotEvent, "jets/job/dsl/iot_event"
15
17
  autoload :KinesisEvent, "jets/job/dsl/kinesis_event"
16
18
  autoload :LogEvent, "jets/job/dsl/log_event"
19
+ autoload :RuleEvent, "jets/job/dsl/rule_event"
17
20
  autoload :S3Event, "jets/job/dsl/s3_event"
18
21
  autoload :SnsEvent, "jets/job/dsl/sns_event"
19
22
  autoload :SqsEvent, "jets/job/dsl/sqs_event"
@@ -22,29 +25,25 @@ module Jets::Job::Dsl
22
25
  class << self
23
26
  include Jets::AwsServices
24
27
 
25
- include CloudwatchEvent
26
28
  include DynamodbEvent
27
29
  include EventSourceMapping
28
30
  include IotEvent
29
31
  include KinesisEvent
30
32
  include LogEvent
33
+ include RuleEvent
31
34
  include S3Event
32
35
  include SnsEvent
33
36
  include SqsEvent
34
37
 
35
- # Need to be in here
36
- ASSOCIATED_PROPERTIES = %W[
37
- description
38
- state
39
- schedule_expression
40
- ]
41
- define_associated_properties(ASSOCIATED_PROPERTIES)
42
- alias_method :desc, :description
38
+ # Used to provide a little more identifiable event rule auto-descriptions
39
+ class_attribute :rule_counter
40
+ self.rule_counter = 0
43
41
 
42
+ # TODO: Get rid of default_associated_resource_definition concept.
43
+ # Also gets rid of the need to keep track of running @associated_properties too.
44
44
  def default_associated_resource_definition(meth)
45
45
  events_rule_definition
46
46
  end
47
-
48
47
  end
49
48
  end
50
49
  end
@@ -0,0 +1,75 @@
1
+ module Jets::Job::Dsl
2
+ module RuleEvent
3
+ # Public: Creates CloudWatch Event Rule
4
+ #
5
+ # expression - The rate expression.
6
+ #
7
+ # Examples
8
+ #
9
+ # rate("10 minutes")
10
+ # rate("10 minutes", description: "Hard job")
11
+ #
12
+ def rate(expression, props={})
13
+ schedule_job("rate(#{expression})", props)
14
+ end
15
+
16
+ # Public: Creates CloudWatch Event Rule
17
+ #
18
+ # expression - The cron expression.
19
+ #
20
+ # Examples
21
+ #
22
+ # cron("0 */12 * * ? *")
23
+ # cron("0 */12 * * ? *", description: "Hard job")
24
+ #
25
+ def cron(expression, props={})
26
+ schedule_job("cron(#{expression})", props)
27
+ end
28
+
29
+ def schedule_job(expression, props={})
30
+ props = props.merge(schedule_expression: expression)
31
+ rule_event(props)
32
+ end
33
+
34
+ def rule_event(props={})
35
+ if props.key?(:detail)
36
+ description = props.key?(:description) ? props.delete(:description) : rule_description
37
+ rule_props = { event_pattern: props, description: description }
38
+ else # if props.key?(:event_pattern)
39
+ props[:description] ||= rule_description
40
+ rule_props = props
41
+ end
42
+
43
+ with_fresh_properties(multiple_resources: false) do
44
+ associated_properties(rule_props) # TODO: consider getting rid of @associated_properties concept
45
+ resource(events_rule_definition) # add associated resource immediately
46
+ end
47
+ end
48
+
49
+ def rule_description
50
+ self.rule_counter += 1
51
+ "#{self.name} event rule #{rule_counter}"
52
+ end
53
+
54
+ def events_rule_definition
55
+ resource = Jets::Resource::Events::Rule.new(associated_properties)
56
+ resource.definition # returns a definition to be added by associated_resources
57
+ end
58
+
59
+ # Deprecated methods, will be removed in the future
60
+ def events_rule(props)
61
+ puts "DEPRECATED: events_rule. Instead use rule_event. The events_rule will be removed in the future. Pausing for 5 seconds".color(:yellow)
62
+ puts caller[0]
63
+ sleep 5
64
+ rule_event(props)
65
+ end
66
+ # Deprecated methods, will be removed in the future
67
+
68
+ def event_pattern(props)
69
+ puts "DEPRECATED: events_rule. Instead use rule_event. The events_rule will be removed in the future. Pausing for 5 seconds".color(:yellow)
70
+ puts caller[0]
71
+ sleep 5
72
+ rule_event(props)
73
+ end
74
+ end
75
+ end
@@ -232,6 +232,10 @@ module Jets::Lambda::Dsl
232
232
  end
233
233
  end
234
234
 
235
+ def ref(name)
236
+ "!Ref #{name.to_s.camelize}"
237
+ end
238
+
235
239
  # meth is a Symbol
236
240
  def method_added(meth)
237
241
  return if %w[initialize method_missing].include?(meth.to_s)
data/lib/jets/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Jets
2
- VERSION = "1.8.6"
2
+ VERSION = "1.8.7"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jets
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.6
4
+ version: 1.8.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-02-17 00:00:00.000000000 Z
11
+ date: 2019-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionmailer
@@ -701,12 +701,12 @@ files:
701
701
  - lib/jets/job.rb
702
702
  - lib/jets/job/base.rb
703
703
  - lib/jets/job/dsl.rb
704
- - lib/jets/job/dsl/cloudwatch_event.rb
705
704
  - lib/jets/job/dsl/dynamodb_event.rb
706
705
  - lib/jets/job/dsl/event_source_mapping.rb
707
706
  - lib/jets/job/dsl/iot_event.rb
708
707
  - lib/jets/job/dsl/kinesis_event.rb
709
708
  - lib/jets/job/dsl/log_event.rb
709
+ - lib/jets/job/dsl/rule_event.rb
710
710
  - lib/jets/job/dsl/s3_event.rb
711
711
  - lib/jets/job/dsl/sns_event.rb
712
712
  - lib/jets/job/dsl/sqs_event.rb
@@ -1,81 +0,0 @@
1
- module Jets::Job::Dsl
2
- module CloudwatchEvent
3
- # Public: Creates CloudWatch Event Rule
4
- #
5
- # expression - The rate expression.
6
- #
7
- # Examples
8
- #
9
- # rate("10 minutes")
10
- # rate("10 minutes", description: "Hard job")
11
- #
12
- def rate(expression, props={})
13
- schedule_job("rate(#{expression})", props)
14
- end
15
-
16
- # Public: Creates CloudWatch Event Rule
17
- #
18
- # expression - The cron expression.
19
- #
20
- # Examples
21
- #
22
- # cron("0 */12 * * ? *")
23
- # cron("0 */12 * * ? *", description: "Hard job")
24
- #
25
- def cron(expression, props={})
26
- schedule_job("cron(#{expression})", props)
27
- end
28
-
29
- def schedule_job(expression, props={})
30
- with_fresh_properties(multiple_resources: false) do
31
- props = props.merge(schedule_expression: expression)
32
- associated_properties(props)
33
- resource(events_rule_definition) # add associated resource immediately
34
- end
35
- end
36
-
37
- def event_pattern(details={}, props={})
38
- with_fresh_properties(multiple_resources: false) do
39
- props = props.merge(event_pattern: details)
40
- associated_properties(props)
41
- resource(events_rule_definition) # add associated resource immediately
42
- end
43
- add_descriptions # useful: generic description in the Event Rule console
44
- end
45
-
46
- def events_rule(props={})
47
- with_fresh_properties(multiple_resources: false) do
48
- associated_properties(props)
49
- resource(events_rule_definition) # add associated resource immediately
50
- end
51
- end
52
-
53
- # Works with eager definitions
54
- def add_descriptions
55
- numbered_resources = []
56
- n = 1
57
- @associated_resources.map do |associated|
58
- # definition = associated.definition
59
- # puts "associated #{associated.inspect}"
60
- # puts "definition #{definition.inspect}"
61
-
62
- # logical_id = definition.keys.first
63
- # attributes = definition.values.first
64
-
65
- logical_id = associated.logical_id
66
- attributes = associated.attributes
67
-
68
- attributes[:properties][:description] ||= "#{self.name} Event Rule #{n}"
69
- new_definition = { "#{logical_id}" => attributes }
70
- numbered_resources << Jets::Resource::Associated.new(new_definition)
71
- n += 1
72
- end
73
- @associated_resources = numbered_resources
74
- end
75
-
76
- def events_rule_definition
77
- resource = Jets::Resource::Events::Rule.new(associated_properties)
78
- resource.definition # returns a definition to be added by associated_resources
79
- end
80
- end
81
- end