Skip to content

Commit

Permalink
created rails generators
Browse files Browse the repository at this point in the history
  • Loading branch information
dubadub committed Jun 4, 2019
1 parent bd6f36b commit c73d23b
Show file tree
Hide file tree
Showing 21 changed files with 126 additions and 5 deletions.
7 changes: 7 additions & 0 deletions Appraisals
@@ -1,5 +1,6 @@
appraise "activerecord-6.0rc1" do
gem "activerecord", "~>6.0.0.rc1", require: "active_record"
gem "generator_spec"

platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter"
Expand All @@ -15,6 +16,7 @@ end

appraise "activerecord-5.2" do
gem "activerecord", "~>5.2", require: "active_record"
gem "generator_spec"

gemfile.platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter"
Expand All @@ -30,6 +32,7 @@ end

appraise "activerecord-5.1" do
gem "activerecord", "~>5.1", require: "active_record"
gem "generator_spec"

gemfile.platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter"
Expand All @@ -45,6 +48,7 @@ end

appraise "activerecord-5.0" do
gem "activerecord", "~>5.0", require: "active_record"
gem "generator_spec"

gemfile.platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter"
Expand All @@ -60,6 +64,7 @@ end

appraise "activerecord-4.2" do
gem "activerecord", "~>4.2", require: "active_record"
gem "generator_spec"

gemfile.platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter", "~>1.3"
Expand All @@ -75,6 +80,7 @@ end

appraise "activerecord-4.1" do
gem "activerecord", "~>4.1", require: "active_record"
gem "generator_spec"

gemfile.platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter", "~>1.3"
Expand All @@ -90,6 +96,7 @@ end

appraise "activerecord-4.0" do
gem "activerecord", "~>4.0", require: "active_record"
gem "generator_spec"

gemfile.platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter", "~>1.3"
Expand Down
2 changes: 1 addition & 1 deletion Gemfile.lock
Expand Up @@ -31,9 +31,9 @@ PLATFORMS
ruby

DEPENDENCIES
filtered!
appraisal (~> 2.2)
bundler (~> 2.0)
filtered!
rake (~> 10.0)
rspec (~> 3.0)

Expand Down
1 change: 1 addition & 0 deletions filtered.gemspec
Expand Up @@ -26,4 +26,5 @@ Gem::Specification.new do |spec|
spec.add_development_dependency "rake", "~> 10.0"
spec.add_development_dependency "rspec", "~> 3.0"
spec.add_development_dependency "appraisal", "~> 2.2"

end
1 change: 1 addition & 0 deletions gemfiles/activerecord_4.0.gemfile
Expand Up @@ -3,6 +3,7 @@
source "https://rubygems.org"

gem "activerecord", "~>4.0", require: "active_record"
gem "generator_spec"

platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter", "~>1.3"
Expand Down
1 change: 1 addition & 0 deletions gemfiles/activerecord_4.1.gemfile
Expand Up @@ -3,6 +3,7 @@
source "https://rubygems.org"

gem "activerecord", "~>4.1", require: "active_record"
gem "generator_spec"

platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter", "~>1.3"
Expand Down
1 change: 1 addition & 0 deletions gemfiles/activerecord_4.2.gemfile
Expand Up @@ -3,6 +3,7 @@
source "https://rubygems.org"

gem "activerecord", "~>4.2", require: "active_record"
gem "generator_spec"

platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter", "~>1.3"
Expand Down
1 change: 1 addition & 0 deletions gemfiles/activerecord_5.0.gemfile
Expand Up @@ -3,6 +3,7 @@
source "https://rubygems.org"

gem "activerecord", "~>5.0", require: "active_record"
gem "generator_spec"

platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter"
Expand Down
1 change: 1 addition & 0 deletions gemfiles/activerecord_5.1.gemfile
Expand Up @@ -3,6 +3,7 @@
source "https://rubygems.org"

gem "activerecord", "~>5.1", require: "active_record"
gem "generator_spec"

platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter"
Expand Down
1 change: 1 addition & 0 deletions gemfiles/activerecord_5.2.gemfile
Expand Up @@ -3,6 +3,7 @@
source "https://rubygems.org"

gem "activerecord", "~>5.2", require: "active_record"
gem "generator_spec"

platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter"
Expand Down
1 change: 1 addition & 0 deletions gemfiles/activerecord_6.0rc1.gemfile
Expand Up @@ -3,6 +3,7 @@
source "https://rubygems.org"

gem "activerecord", "~>6.0.0.rc1", require: "active_record"
gem "generator_spec"

platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter"
Expand Down
13 changes: 9 additions & 4 deletions lib/filtered.rb
@@ -1,7 +1,12 @@
require "filtered/version"
require "filtered/field_definition"
require "filtered/base"

module Filtered

require "filtered/version"
require "filtered/field_definition"
require "filtered/base"

if defined?(Rails)
require "filtered/engine"
end

class Error < StandardError; end
end
5 changes: 5 additions & 0 deletions lib/filtered/base.rb
Expand Up @@ -22,6 +22,11 @@ def base.field(field_name, options = {}, &block)
end

field_definitions[field_name] = field_definition


define_method field_name do
fields[field_name]
end
end

def base.field_definitions
Expand Down
5 changes: 5 additions & 0 deletions lib/filtered/engine.rb
@@ -0,0 +1,5 @@
module Filtered
class Engine < ::Rails::Engine
config.autoload_paths += Dir["#{config.root}/app/filters/**/"]
end
end
15 changes: 15 additions & 0 deletions lib/generators/filter/USAGE
@@ -0,0 +1,15 @@
Description:
Stubs out a new filter. Pass the filter name, either CamelCased or
under_scored, and an optional list of fields as arguments.

You don't have to think up every field up front, but it helps to
sketch out a few so you can start working with the filter immediately.

To create a filter within a module, specify the filter name as a
path like 'parent_module/filter_name'.

Example:
`rails generate filter users group persmission`

Users filter.
Filter: app/filters/users_filter.rb
17 changes: 17 additions & 0 deletions lib/generators/filter/filter_generator.rb
@@ -0,0 +1,17 @@
class FilterGenerator < Rails::Generators::NamedBase
check_class_collision suffix: "Filter"

source_root File.expand_path("templates", __dir__)

argument :fields, type: :array, default: [], banner: "field field"

def create_filter_file
template "filter.rb", File.join("app/filters", class_path, "#{file_name}_filter.rb")
end

private

def file_name
@_file_name ||= super.sub(/_filter\z/i, "")
end
end
8 changes: 8 additions & 0 deletions lib/generators/filter/templates/filter.rb
@@ -0,0 +1,8 @@
class <%= class_name %>Filter < ApplicationFilter
<% for field in fields -%>
field :<%= field %>
<% end -%>

end

12 changes: 12 additions & 0 deletions lib/generators/filtered/install/install_generator.rb
@@ -0,0 +1,12 @@
module Filtered
module Generators
class InstallGenerator < Rails::Generators::Base

source_root File.expand_path("templates", __dir__)

def generate_install
copy_file "application_filter.rb", "app/filters/application_filter.rb"
end
end
end
end
@@ -0,0 +1,3 @@
class ApplicationFilter < Filtered::Base

end
17 changes: 17 additions & 0 deletions spec/generators/filter_generator_spec.rb
@@ -0,0 +1,17 @@
require "spec_helper"
require "generator_spec"
require "generators/filter/filter_generator"

RSpec.describe FilterGenerator, type: :generator do
destination File.expand_path("../../tmp", __FILE__)
arguments %w(users group persmission)

before(:all) do
prepare_destination
run_generator
end

it "creates a filter file" do
assert_file "app/filters/users_filter.rb", /class UsersFilter < ApplicationFilter/
end
end
16 changes: 16 additions & 0 deletions spec/generators/install_generator_spec.rb
@@ -0,0 +1,16 @@
require "spec_helper"
require "generator_spec"
require "generators/filtered/install/install_generator"

RSpec.describe Filtered::Generators::InstallGenerator, type: :generator do
destination File.expand_path("../../tmp", __FILE__)

before(:all) do
prepare_destination
run_generator
end

it "creates a base file" do
assert_file "app/filters/application_filter.rb"
end
end
3 changes: 3 additions & 0 deletions spec/tmp/app/filters/application_filter.rb
@@ -0,0 +1,3 @@
class ApplicationFilter < Filtered::Base

end

0 comments on commit c73d23b

Please sign in to comment.