Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use RuboCop and fix code style #515

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
*.gem
.bundle
Gemfile.lock
gemfiles/*.lock
pkg/*
tmp/*
coverage/*
log*/*
.rbx/*
.rspec
*.swp

# for a library or gem, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
/Gemfile.lock
/gemfiles/*.lock
/.ruby-version
/.ruby-gemset
43 changes: 43 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
AllCops:
TargetRubyVersion: 2.3
DisplayCopNames: true

Exclude:
- 'gemfiles/*'
- 'vendor/**/*'

Layout/AccessModifierIndentation:
EnforcedStyle: outdent

Layout/AlignHash:
EnforcedColonStyle: table
EnforcedHashRocketStyle: table

Metrics/BlockLength:
Exclude:
- '*.gemspec'
- 'spec/**/*'

Style/AndOr:
EnforcedStyle: conditionals

Style/Documentation:
Enabled: false

Style/DoubleNegation:
Enabled: false

Style/RescueStandardError:
Enabled: false

Style/TrailingCommaInArguments:
EnforcedStyleForMultiline: comma

Style/TrailingCommaInArrayLiteral:
EnforcedStyleForMultiline: comma

Style/TrailingCommaInHashLiteral:
EnforcedStyleForMultiline: comma

Style/VariableInterpolation:
Enabled: false
32 changes: 17 additions & 15 deletions Appraisals
Original file line number Diff line number Diff line change
@@ -1,30 +1,32 @@
# frozen_string_literal: true

appraise 'mongoid-6' do
gem "mongoid", "~> 6"
gem "bson_ext", :platform => "ruby"
gem 'mongoid', '~> 6'
gem 'bson_ext', platform: 'ruby'
end

appraise 'mongoid-7' do
gem "mongoid", "~> 7"
gem "bson_ext", :platform => "ruby"
gem 'mongoid', '~> 7'
gem 'bson_ext', platform: 'ruby'
end

appraise 'activerecord-4' do
gem "sqlite3", "~> 1.3.6", :platform => "ruby"
gem "activerecord", "~> 4.2.11", :require => "active_record"
gem 'sqlite3', '~> 1.3.6', platform: 'ruby'
gem 'activerecord', '~> 4.2.11', require: 'active_record'
end

appraise 'activerecord-5' do
gem "sqlite3", "~> 1.3.6", :platform => "ruby"
gem "activerecord", ">= 5.2.0", :require => "active_record"
gem 'sqlite3', '~> 1.3.6', platform: 'ruby'
gem 'activerecord', '>= 5.2.0', require: 'active_record'

# Ammeter dependencies:
gem "actionpack", ">= 5.2.0"
gem "activemodel", ">= 5.2.0"
gem "railties", ">= 5.2.0"
gem 'actionpack', '>= 5.2.0'
gem 'activemodel', '>= 5.2.0'
gem 'railties', '>= 5.2.0'

gem 'rspec-rails' , github: 'rspec/rspec-rails'
gem 'rspec-core' , github: 'rspec/rspec-core'
gem 'rspec-rails', github: 'rspec/rspec-rails'
gem 'rspec-core', github: 'rspec/rspec-core'
gem 'rspec-expectations', github: 'rspec/rspec-expectations'
gem 'rspec-mocks' , github: 'rspec/rspec-mocks'
gem 'rspec-support' , github: 'rspec/rspec-support'
gem 'rspec-mocks', github: 'rspec/rspec-mocks'
gem 'rspec-support', github: 'rspec/rspec-support'
end
1 change: 1 addition & 0 deletions CONTRIBUTORS
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ Sergey Alekseev (@sergey-alekseev)
Sankalp Kulshreshtha (@sankalpk)
Kirill Sevastyanenko (@kirillseva)
Denis Shevchenko (@SimplySorc)
Alex Kotov (@kotovalexarian)
16 changes: 9 additions & 7 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
source "https://rubygems.org"
# frozen_string_literal: true

source 'https://rubygems.org'

gemspec

group :test do
gem 'appraisal'
gem 'coveralls', :require => false
gem 'its'
gem 'byebug'
gem 'codeclimate-test-reporter', require: nil
gem 'coveralls', require: false
gem 'database_cleaner', '~> 1.6.2'
gem 'its'
gem 'pry-byebug'
gem 'test-unit' # Implicitly loaded by ammeter
gem 'database_cleaner', '~> 1.6.2'
gem 'codeclimate-test-reporter', :require => nil
end

gemspec
17 changes: 13 additions & 4 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'bundler'
require 'rspec/core/rake_task'
require 'coveralls/rake/task'
Expand All @@ -15,10 +17,10 @@ RSpec::Core::RakeTask.new(:rolify) do |task|
task.pattern = 'spec/rolify/**/*_spec.rb'
end

if !ENV["APPRAISAL_INITIALIZED"] && !ENV["TRAVIS"]
task :default => :appraisal
if !ENV['APPRAISAL_INITIALIZED'] && !ENV['TRAVIS']
task default: :appraisal
else
task :default => [ :spec, 'coveralls:push' ]
task default: %i[spec coveralls:push]
end

desc 'Run all specs'
Expand All @@ -27,7 +29,7 @@ task 'spec' do
return_code1 = $?.exitstatus
Rake::Task['rolify'].invoke
return_code2 = $?.exitstatus
fail if return_code1 != 0 || return_code2 != 0
raise if return_code1 != 0 || return_code2 != 0
end

desc 'Run specs for all adapters'
Expand All @@ -37,3 +39,10 @@ task :spec_all do
system "ADAPTER=#{model_adapter} rake"
end
end

begin
require 'rubocop/rake_task'
RuboCop::RakeTask.new
rescue LoadError
nil
end
52 changes: 33 additions & 19 deletions lib/rolify.rb
Original file line number Diff line number Diff line change
@@ -1,61 +1,75 @@
require 'rolify/adapters/base'
require 'rolify/configure'
require 'rolify/dynamic'
require 'rolify/railtie' if defined?(Rails)
require 'rolify/railtie' if defined? Rails
require 'rolify/resource'
require 'rolify/role'

module Rolify
extend Configure

attr_accessor :role_cname, :adapter, :resource_adapter, :role_join_table_name, :role_table_name, :strict_rolify
ROLIFY_ASSOCIATION_OPTIONS = %i[
before_add
after_add
before_remove
after_remove
inverse_of
].freeze

attr_writer :resource_adapter, :adapter

attr_accessor :role_cname, :role_join_table_name, :role_table_name,
:strict_rolify

@@resource_types = []

def rolify(options = {})
include Role
extend Dynamic if Rolify.dynamic_shortcuts

options.reverse_merge!({:role_cname => 'Role'})
options.reverse_merge! role_cname: 'Role'
self.role_cname = options[:role_cname]
self.role_table_name = self.role_cname.tableize.gsub(/\//, "_")
self.role_table_name = role_cname.tableize.tr('/', '_')

default_join_table = "#{self.to_s.tableize.gsub(/\//, "_")}_#{self.role_table_name}"
options.reverse_merge!({:role_join_table_name => default_join_table})
default_join_table = "#{to_s.tableize.tr('/', '_')}_#{role_table_name}"
options.reverse_merge! role_join_table_name: default_join_table
self.role_join_table_name = options[:role_join_table_name]

rolify_options = { :class_name => options[:role_cname].camelize }
rolify_options.merge!({ :join_table => self.role_join_table_name }) if Rolify.orm == "active_record"
rolify_options.merge!(options.reject{ |k,v| ![ :before_add, :after_add, :before_remove, :after_remove, :inverse_of ].include? k.to_sym })
rolify_options = { class_name: options[:role_cname].camelize }
rolify_options[:join_table] = role_join_table_name if Rolify.orm == 'active_record'
rolify_options.merge! options.select { |k, _| ROLIFY_ASSOCIATION_OPTIONS.include? k.to_sym }

has_and_belongs_to_many :roles, rolify_options

self.adapter = Rolify::Adapter::Base.create("role_adapter", self.role_cname, self.name)
self.adapter = Rolify::Adapter::Base.create('role_adapter', role_cname, name)

#use strict roles
self.strict_rolify = true if options[:strict]
end

def adapter
return self.superclass.adapter unless self.instance_variable_defined? '@adapter'
return superclass.adapter unless instance_variable_defined? '@adapter'

@adapter
end

def resourcify(association_name = :roles, options = {})
include Resource

options.reverse_merge!({ :role_cname => 'Role', :dependent => :destroy })
resourcify_options = { :class_name => options[:role_cname].camelize, :as => :resource, :dependent => options[:dependent] }
options.reverse_merge! role_cname: 'Role', dependent: :destroy
resourcify_options = { class_name: options[:role_cname].camelize, as: :resource, dependent: options[:dependent] }
self.role_cname = options[:role_cname]
self.role_table_name = self.role_cname.tableize.gsub(/\//, "_")
self.role_table_name = role_cname.tableize.tr('/', '_')

has_many association_name, resourcify_options

self.resource_adapter = Rolify::Adapter::Base.create("resource_adapter", self.role_cname, self.name)
self.resource_adapter = Rolify::Adapter::Base.create('resource_adapter', role_cname, name)
@@resource_types << self.name
end

def resource_adapter
return self.superclass.resource_adapter unless self.instance_variable_defined? '@resource_adapter'
return superclass.resource_adapter unless instance_variable_defined? '@resource_adapter'

@resource_adapter
end

Expand All @@ -65,12 +79,12 @@ def scopify
end

def role_class
return self.superclass.role_class unless self.instance_variable_defined? '@role_cname'
self.role_cname.constantize
return superclass.role_class unless instance_variable_defined? '@role_cname'

role_cname.constantize
end

def self.resource_types
@@resource_types
end

end
2 changes: 1 addition & 1 deletion lib/rolify/adapters/active_record/resource_adapter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def all_except(resource, excluded_obj)
resource.where.not(prime_key => excluded_obj.pluck(prime_key))
end

private
private

def quote_column(column)
ActiveRecord::Base.connection.quote_column_name column
Expand Down
2 changes: 1 addition & 1 deletion lib/rolify/adapters/active_record/role_adapter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ def all_except(user, excluded_obj)
user.where.not(user.primary_key => excluded_obj)
end

private
private

def build_conditions(relation, args)
conditions = []
Expand Down
2 changes: 1 addition & 1 deletion lib/rolify/adapters/mongoid/role_adapter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ def all_except(user, excluded_obj)
user.not_in(_id: excluded_obj.to_a)
end

private
private

def build_conditions(relation, args)
conditions = []
Expand Down
31 changes: 19 additions & 12 deletions lib/rolify/configure.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
# frozen_string_literal: true

module Rolify
module Configure
@@dynamic_shortcuts = false
@@orm = "active_record"
@@orm = 'active_record'
@@remove_role_if_empty = true

def configure(*role_cnames)
return if !sanity_check(role_cnames)
return unless sanity_check role_cnames

yield self if block_given?
end

Expand All @@ -26,18 +29,19 @@ def orm=(orm)
end

def use_mongoid
self.orm = "mongoid"
self.orm = 'mongoid'
end

def use_dynamic_shortcuts
return if !sanity_check([])
return unless sanity_check []

self.dynamic_shortcuts = true
end

def use_defaults
configure do |config|
config.dynamic_shortcuts = false
config.orm = "active_record"
config.orm = 'active_record'
end
end

Expand All @@ -49,18 +53,22 @@ def remove_role_if_empty
@@remove_role_if_empty
end

private
private

def sanity_check(role_cnames)
return true if ARGV.reduce(nil) { |acc,arg| arg =~ /assets:/ if acc.nil? } == 0
return true if ARGV.reduce(nil) { |acc, arg| arg =~ /assets:/ if acc.nil? } == 0

role_cnames.each do |role_cname|
role_class = role_cname.constantize
if role_class.superclass.to_s == "ActiveRecord::Base" && role_table_missing?(role_class)
warn "[WARN] table '#{role_cname}' doesn't exist. Did you run the migration? Ignoring rolify config."
return false
end

next unless role_class.superclass.to_s == 'ActiveRecord::Base' &&
role_table_missing?(role_class)

warn "[WARN] table '#{role_cname}' doesn't exist. " \
'Did you run the migration? Ignoring rolify config.'
return false
end

true
end

Expand All @@ -69,6 +77,5 @@ def role_table_missing?(role_class)
rescue ActiveRecord::NoDatabaseError
true
end

end
end
Loading