reel_template 0.0.5 → 0.0.6

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
  SHA1:
3
- metadata.gz: c0a78cf770740cd41f90afa8b6b533cbb211c863
4
- data.tar.gz: 42e365017954bc5c12ca36d1e0d98e459358d92d
3
+ metadata.gz: a1517f28622ae1969ecbe03740539f63a200a606
4
+ data.tar.gz: f17540bd89a3f2e4d6619c1b63e5ffd6db97994e
5
5
  SHA512:
6
- metadata.gz: 8d7ff9ce77e8e894e70b4a4f7ae53eefcc74b138f39535cfbefffc2935d7368293e0b2f621513d86ef58c781452059b1a07f6d7cacb67a0ef566f00b28c5aebc
7
- data.tar.gz: 7c8948d04bf080b4855c00158ad90cc366272b4d7829fe3c90fe649608ea285372733a5079ec2d9bd024214cbfa7403d8ca719f35a0863b6fc85b27eabdf71f2
6
+ metadata.gz: 24c8db48181528af449d39ddfde1aea8c36982dbae6c087c7c12e4e2553d46c40ae81ae52d90e416673ee5baa165c84387ae4e70a5bd24c8c48b4acbaa39a9f1
7
+ data.tar.gz: 47371943250a4bc8b0282dde762001c72ed3fe9ffb1d01528d6c3234c1d6617174491b8e53d1b65b93012af5987090c6a7fa93039416647e6b4e43baa4e16f8d
@@ -1,3 +1,3 @@
1
1
  module ReelTemplate
2
- VERSION = %w(0 0 5).join('.')
2
+ VERSION = %w(0 0 6).join('.')
3
3
  end
@@ -7,8 +7,8 @@ module <%= @app_module %>
7
7
 
8
8
  require '<%= @app_name %>/commands/base'
9
9
 
10
- # REQUIRE YOUR COMMMANDS HERE
11
- require '<%= @app_name %>/commands/test'
10
+ # Require all files from the 'commands' directory
11
+ <%= @app_module %>.require_dir 'commands'
12
12
 
13
13
  end
14
14
  end
@@ -0,0 +1,19 @@
1
+ <%
2
+ @file_name = "lib/#{@app_name}/commands/create.rb"
3
+ %>
4
+ module <%= @app_module %>::Commands
5
+ class Create < Command
6
+
7
+ def execute
8
+ record = <%= @app_module %>::Models::Test.new(params)
9
+
10
+ if record.save
11
+ success record
12
+ else
13
+ failure record, t(:invalid, model: "ModelName") # Returns failure code with an invalid message (from locale/en.yml file)
14
+ end
15
+
16
+ end
17
+
18
+ end
19
+ end
@@ -5,10 +5,12 @@
5
5
  module <%= @app_module %>
6
6
  module Commands
7
7
 
8
- class Test < Command
8
+ class GetAll < Command
9
9
 
10
10
  def execute
11
- success nil, "Test Command completed successfully"
11
+ database_records = <%= @app_module %>::Models::Test.all
12
+
13
+ success database_records
12
14
  end
13
15
 
14
16
  end
@@ -17,6 +17,14 @@ module <%= @app_module %>
17
17
  <%= @app_const %>_ROOT
18
18
  end
19
19
 
20
+ # Requires all .rb files in the named directory
21
+ # Useful for loading all commands / endpoints / models / etc...
22
+ # @param [String] directory The directory to load files from
23
+ def require_dir(directory)
24
+ directory = File.expand_path("../#{directory}", __FILE__)
25
+ Dir["#{directory}/**/*.rb"].each { |f| require f }
26
+ end
27
+
20
28
  # Determines the current environment from the system ENV variable. Defaults to development
21
29
  # @return [String] The current application environment
22
30
  def env
@@ -11,8 +11,8 @@ module <%= @app_module %>
11
11
  require '<%= @app_name %>/endpoints/base'
12
12
  require '<%= @app_name %>/support/authentication'
13
13
 
14
- # REQUIRE YOUR ENDPOINTS HERE
15
- require '<%= @app_name %>/endpoints/test_endpoint'
14
+ # Require all files from the 'endpoints' directory
15
+ <%= @app_module %>.require_dir 'endpoints'
16
16
 
17
17
  end
18
18
  end
@@ -45,10 +45,22 @@ module <%= @app_module %>::Endpoints
45
45
  @params ||= Hashie::Mash.new( combined_params )
46
46
  end
47
47
 
48
+ # Returns the current user
49
+ # @current_user could be set from inside the `basic_auth` block located in support/authentication.rb
48
50
  def current_user
49
51
  @current_user || nil
50
52
  end
51
53
 
54
+ # Returns an array of allowed HTTP methods (GET, POST, etc...)
55
+ def self.allowed_methods
56
+ raise NotImplementedError
57
+ end
58
+
59
+ # @private
60
+ def allowed_methods
61
+ self.class.allowed_methods
62
+ end
63
+
52
64
  private
53
65
 
54
66
  # Retrieves all parameters from request body, URL segments and URL query string
@@ -5,20 +5,43 @@
5
5
  module <%= @app_module %>
6
6
  module Endpoints
7
7
 
8
+ # Endpoint allows for the use of Webmachine resource callbacks
8
9
  class TestEndpoint < Endpoint
9
10
 
10
- def allowed_methods
11
- %w(GET)
11
+ # Only allow GET and POST requests to this endpoint
12
+ def self.allowed_methods
13
+ %w(GET POST)
12
14
  end
13
15
 
16
+ # All URLs route to this endpoint
14
17
  def self.path
15
- ["test"]
18
+ ["*"]
16
19
  end
17
20
 
21
+ # POST requests create a resource
22
+ def post_is_create?
23
+ true
24
+ end
25
+
26
+ # Webmachine callback for POST requests
27
+ def create_path
28
+ create_command = <%= @app_module %>::Commands::Create.new(params)
29
+ @create_response = create_command.execute
30
+
31
+ "/#{@create_response.id}" # Returns the path to the created resource
32
+ end
33
+
34
+ # Called during POST and PUT requests
35
+ def from_json
36
+ send_response! @create_response
37
+ end
38
+
39
+ # Called for GET requests
18
40
  def to_json
19
- test = <%= @app_module %>::Commands::Test.new(params)
20
- send_response! test.execute
41
+ get_all = <%= @app_module %>::Commands::GetAll.new(params)
42
+ send_response! get_all.execute
21
43
  end
44
+
22
45
  end
23
46
 
24
47
  end
@@ -9,8 +9,8 @@ module <%= @app_module %>
9
9
 
10
10
  require '<%= @app_name %>/support/serializable_attributes'
11
11
 
12
- # REQUIRE YOUR MODELS HERE
13
- # require '<%= @app_name %>/models/user'
12
+ # Require all files from the 'models' directory
13
+ <%= @app_module %>.require_dir 'models'
14
14
 
15
15
  end
16
16
  end
@@ -12,8 +12,9 @@ module <%= @app_module %>
12
12
  set_collection_name 'test'
13
13
 
14
14
  key :test_field, String
15
+ validates_presence_of :test_field
15
16
 
16
- serialize_attributes :id, :test_field
17
+ serialize_attrs :id, :test_field # Only these fields are included in the response JSON output
17
18
  end
18
19
 
19
20
  end
@@ -35,7 +35,7 @@ module <%= @app_module %>
35
35
  app.routes do
36
36
  # Add each registered endpoint to router
37
37
  <%= @app_module %>::Endpoints.all.each do |ep|
38
- add ep.path, ep
38
+ add ep.path, ->(request) { ep.allowed_methods.include? request.method }, ep
39
39
  end
40
40
  end
41
41
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reel_template
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Dayton
@@ -50,7 +50,8 @@ files:
50
50
  - template/lib/app.rb.erb
51
51
  - template/lib/appname/commands.rb.erb
52
52
  - template/lib/appname/commands/base.rb.erb
53
- - template/lib/appname/commands/test.rb.erb
53
+ - template/lib/appname/commands/create.rb.erb
54
+ - template/lib/appname/commands/get_all.rb.erb
54
55
  - template/lib/appname/config.rb.erb
55
56
  - template/lib/appname/core.rb.erb
56
57
  - template/lib/appname/endpoints.rb.erb