class Shogun::Command::Generate
Public Class Methods
new(namespace, resource, *parameters)
click to toggle source
# File lib/shogun/command/generate.rb, line 6 def initialize(namespace, resource, *parameters) @namespace = namespace @resource = resource @parameters = parameters end
Public Instance Methods
execute()
click to toggle source
# File lib/shogun/command/generate.rb, line 12 def execute architecture(source: scaffold_directory, destination: namespace_directory) do |architect| architect.copy(file: "resource.rb", as: "#{resource}.rb", context: context) architect.create(directory: architect.destination(resource)) architect.within(source: "resource", destination: resource) do |scope| scope.copy(file: "endpoint.rb", context: context) scope.copy(file: "model.rb", context: context) scope.copy(file: "null.rb", context: context) scope.copy(file: "presenter.rb", context: context) subresource(scope, "show") subresource(scope, "list") subresource(scope, "create") subresource(scope, "update") subresource(scope, "destroy") end end end
Private Instance Methods
context()
click to toggle source
# File lib/shogun/command/generate.rb, line 62 def context { namespace_module: namespace_module, resource_module: resource_module, namespace: namespace, resource: resource } end
current_directory()
click to toggle source
# File lib/shogun/command/generate.rb, line 58 def current_directory Dir.pwd end
gem_directory()
click to toggle source
# File lib/shogun/command/generate.rb, line 54 def gem_directory Gem::Specification.find_by_name("shogun").gem_dir end
namespace()
click to toggle source
# File lib/shogun/command/generate.rb, line 79 def namespace @namespace.downcase end
namespace_directory()
click to toggle source
# File lib/shogun/command/generate.rb, line 46 def namespace_directory File.join(current_directory, "lib", @namespace) end
namespace_module()
click to toggle source
# File lib/shogun/command/generate.rb, line 71 def namespace_module @namespace.camelcase end
resource()
click to toggle source
# File lib/shogun/command/generate.rb, line 83 def resource @resource.downcase end
resource_directory()
click to toggle source
# File lib/shogun/command/generate.rb, line 50 def resource_directory destination(@parameters.first) end
resource_module()
click to toggle source
# File lib/shogun/command/generate.rb, line 75 def resource_module @resource.camelcase end
resource_signular()
click to toggle source
# File lib/shogun/command/generate.rb, line 87 def resource_signular resource.singular end
scaffold_directory()
click to toggle source
# File lib/shogun/command/generate.rb, line 42 def scaffold_directory File.join(gem_directory, "scaffold", "generate") end
subresource(architect, name)
click to toggle source
# File lib/shogun/command/generate.rb, line 30 def subresource(architect, name) architect.copy(file: "#{name}.rb", context: context) architect.create(directory: architect.destination(name)) architect.within(source: name, destination: name) do |scope| scope.copy(file: "authorizer.rb", context: context) scope.copy(file: "control.rb", context: context) scope.copy(file: "denormalizer.rb", context: context) scope.copy(file: "normalizer.rb", context: context) scope.copy(file: "validator.rb", context: context) end end