date_book 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +9 -1
  3. data/.rubocop_todo.yml +2 -1
  4. data/.travis.yml +3 -0
  5. data/Gemfile +16 -4
  6. data/Gemfile.lock +14 -2
  7. data/VERSION +1 -1
  8. data/app/assets/javascripts/date_book/calendar_events.js +3 -3
  9. data/app/assets/stylesheets/date_book.css.scss +31 -2
  10. data/app/controllers/date_book/calendars_controller.rb +30 -19
  11. data/app/controllers/date_book/date_book_controller.rb +1 -1
  12. data/app/controllers/date_book/events_controller.rb +60 -62
  13. data/app/controllers/date_book/graphql_controller.rb +10 -11
  14. data/app/graphql/date_book_schema.rb +4 -4
  15. data/app/graphql/types/calendar_type.rb +4 -2
  16. data/app/graphql/types/date_time_type.rb +9 -5
  17. data/app/graphql/types/event_occurrence_type.rb +4 -2
  18. data/app/graphql/types/event_type.rb +4 -2
  19. data/app/graphql/types/mutation_type.rb +3 -1
  20. data/app/graphql/types/query_type.rb +12 -26
  21. data/app/helpers/date_book/application_helper.rb +4 -7
  22. data/app/helpers/date_book/events_helper.rb +43 -23
  23. data/app/views/date_book/application/_date_range.html.haml +3 -3
  24. data/app/views/date_book/calendars/index.html.haml +19 -3
  25. data/app/views/date_book/calendars/show.html.haml +29 -4
  26. data/app/views/date_book/events/_event.json.jbuilder +3 -1
  27. data/app/views/date_book/events/_form.html.haml +4 -4
  28. data/app/views/date_book/events/_occurrence_dates.html.haml +3 -3
  29. data/app/views/date_book/events/fields/_date.html.haml +1 -1
  30. data/app/views/date_book/events/fields/_day.html.haml +1 -1
  31. data/app/views/date_book/events/fields/_day_of_week.html.haml +3 -3
  32. data/app/views/date_book/events/fields/_duration.html.haml +3 -3
  33. data/app/views/date_book/events/fields/_interval.html.haml +1 -1
  34. data/app/views/date_book/events/fields/_time.html.haml +1 -1
  35. data/app/views/date_book/events/index.html.haml +1 -1
  36. data/app/views/date_book/events/rules/_daily.html.haml +3 -3
  37. data/app/views/date_book/events/rules/_monthly.html.haml +4 -4
  38. data/app/views/date_book/events/rules/_singular.html.haml +3 -3
  39. data/app/views/date_book/events/rules/_weekly.html.haml +4 -4
  40. data/app/views/date_book/events/show.html.haml +1 -1
  41. data/app/views/layouts/_date_book_scripts.html.haml +2 -4
  42. data/config/locales/en.yml +2 -0
  43. data/config/routes.rb +1 -1
  44. data/date_book.gemspec +25 -22
  45. data/db/migrate/20170807133845_create_calendars.rb +3 -0
  46. data/db/migrate/20170807133846_create_events.rb +3 -0
  47. data/db/migrate/20170807133847_create_schedules.rb +9 -6
  48. data/db/migrate/20170807133848_add_fields_to_schedule.rb +3 -0
  49. data/db/migrate/20170807133849_create_event_occurrences.rb +4 -3
  50. data/db/migrate/20170807133850_add_fields_to_event_occurrences.rb +3 -0
  51. data/lib/date_book.rb +11 -2
  52. data/lib/date_book/concerns/ability.rb +9 -12
  53. data/lib/date_book/concerns/acts_as_calendar.rb +5 -6
  54. data/lib/date_book/concerns/acts_as_event.rb +30 -9
  55. data/lib/date_book/concerns/acts_as_event_occurrence.rb +21 -9
  56. data/lib/date_book/concerns/acts_as_ownable.rb +9 -3
  57. data/lib/date_book/concerns/acts_as_owner.rb +5 -6
  58. data/lib/date_book/concerns/acts_as_schedule.rb +14 -7
  59. data/lib/date_book/configuration.rb +14 -11
  60. data/lib/date_book/engine.rb +7 -5
  61. data/lib/date_book/version.rb +2 -0
  62. data/lib/generators/date_book/install/install_generator.rb +27 -29
  63. data/lib/generators/date_book/install/templates/app/models/calendar.rb +4 -1
  64. data/lib/generators/date_book/install/templates/app/models/event.rb +4 -1
  65. data/lib/generators/date_book/install/templates/app/models/event_occurrence.rb +4 -1
  66. data/lib/generators/date_book/install/templates/app/models/schedule.rb +4 -1
  67. data/spec/abilities/event_spec.rb +1 -1
  68. data/spec/controllers/date_book/calendars_controller_spec.rb +48 -20
  69. data/spec/controllers/date_book/events_controller_spec.rb +145 -39
  70. data/spec/dummy/app/models/calendar.rb +3 -1
  71. data/spec/dummy/app/models/event.rb +3 -1
  72. data/spec/dummy/app/models/event_occurrence.rb +3 -1
  73. data/spec/dummy/app/models/role.rb +7 -5
  74. data/spec/dummy/app/models/schedule.rb +3 -1
  75. data/spec/dummy/app/models/user.rb +3 -3
  76. data/spec/dummy/config/initializers/devise.rb +61 -40
  77. data/spec/dummy/config/initializers/high_voltage.rb +2 -0
  78. data/spec/dummy/config/initializers/rolify.rb +5 -2
  79. data/spec/dummy/config/routes.rb +6 -9
  80. data/spec/dummy/db/development.sqlite3 +0 -0
  81. data/spec/dummy/db/migrate/20170728171103_create_users_table.rb +2 -0
  82. data/spec/dummy/db/migrate/20170807134122_add_devise_to_users.rb +4 -3
  83. data/spec/dummy/db/migrate/20170807134128_rolify_create_roles.rb +6 -4
  84. data/spec/dummy/db/migrate/{20170808150915_create_calendars.date_book.rb → 20170808200808_create_calendars.date_book.rb} +3 -0
  85. data/spec/dummy/db/migrate/{20170808150916_create_events.date_book.rb → 20170808200809_create_events.date_book.rb} +3 -0
  86. data/spec/dummy/db/migrate/{20170808150917_create_schedules.date_book.rb → 20170808200810_create_schedules.date_book.rb} +9 -6
  87. data/spec/dummy/db/migrate/{20170808150918_add_fields_to_schedule.date_book.rb → 20170808200811_add_fields_to_schedule.date_book.rb} +3 -0
  88. data/spec/dummy/db/migrate/{20170808150919_create_event_occurrences.date_book.rb → 20170808200812_create_event_occurrences.date_book.rb} +4 -3
  89. data/spec/dummy/db/migrate/{20170808150920_add_fields_to_event_occurrences.date_book.rb → 20170808200813_add_fields_to_event_occurrences.date_book.rb} +3 -0
  90. data/spec/dummy/db/schema.rb +1 -1
  91. data/spec/dummy/db/seeds/calendars.seeds.rb +2 -1
  92. data/spec/dummy/db/seeds/events.seeds.rb +5 -5
  93. data/spec/dummy/db/seeds/users.seeds.rb +3 -1
  94. data/spec/dummy/db/test.sqlite3 +0 -0
  95. data/spec/dummy/lib/basic_benchmark.rb +2 -0
  96. data/spec/factories/calendars.rb +2 -0
  97. data/spec/factories/events.rb +2 -0
  98. data/spec/factories/roles.rb +2 -1
  99. data/spec/factories/users.rb +2 -0
  100. data/spec/features/calendars_spec.rb +47 -5
  101. data/spec/features/events_spec.rb +35 -9
  102. data/spec/helpers/date_book/application_helper_spec.rb +32 -0
  103. data/spec/helpers/date_book/events_helper_spec.rb +181 -13
  104. data/spec/models/calendar_spec.rb +3 -1
  105. data/spec/models/event_spec.rb +3 -1
  106. data/spec/models/role_spec.rb +1 -0
  107. data/spec/rails_helper.rb +6 -1
  108. data/spec/requests/date_book/api_spec.rb +76 -0
  109. data/spec/routing/date_book/calendars_routing_spec.rb +4 -2
  110. data/spec/routing/date_book/events_routing_spec.rb +48 -11
  111. data/spec/support/controller_behaviors.rb +2 -0
  112. data/spec/support/controller_macros.rb +3 -1
  113. data/spec/support/factory_girl.rb +2 -0
  114. data/spec/support/feature_behaviors.rb +9 -9
  115. data/spec/support/loaded_site.rb +2 -0
  116. data/spec/support/loaded_site/calendars.rb +2 -0
  117. data/spec/support/loaded_site/events.rb +3 -1
  118. data/spec/support/loaded_site/users.rb +2 -0
  119. data/spec/support/request_behaviors.rb +12 -63
  120. data/spec/support/shared_connection.rb +2 -0
  121. data/spec/support/utilities.rb +6 -5
  122. metadata +79 -42
  123. data/app/graphql/types/profile_type.rb +0 -7
  124. data/app/helpers/date_book/calendar_helper.rb +0 -4
  125. data/app/views/date_book/application/_all_day_checkbox.html.haml +0 -1
  126. data/bin/rails +0 -15
  127. data/spec/helpers/date_book/calendar_helper_spec.rb +0 -17
  128. data/spec/requests/date_book/events_spec.rb +0 -56
@@ -7,21 +7,18 @@ module DateBook
7
7
 
8
8
  def initialize_date_book(user)
9
9
  alias_action :index, :show, :popover, to: :read
10
- if user.has_role? :admin
11
- can :manage, :all
12
- elsif user.new_record?
13
- can :read, Calendar
14
- can :read, Event
15
- else
16
- can :read, Calendar
17
- can :create, Calendar
18
- can :manage, Calendar, id: Calendar.with_role(:owner, user).ids
19
10
 
20
- can :read, Event
21
- cannot :create, Event
22
- can :manage, Event, calendar_id: Calendar.with_role(:owner, user).ids
11
+ can :read, [Calendar, Event]
12
+
13
+ unless user.new_record?
14
+ my_calendar_ids = Calendar.with_role(:owner, user).ids
15
+ can :create, Calendar
16
+ can :manage, Calendar, id: my_calendar_ids
17
+ can :manage, Event, calendar_id: my_calendar_ids
23
18
  can :manage, Event, id: Event.with_role(:owner, user).ids
24
19
  end
20
+
21
+ can :manage, :all if user.has_role? :admin
25
22
  end
26
23
  end
27
24
  end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DateBook
4
+ # Mixin to allow acts_as_calendar behavior in Calendar model
2
5
  module ActsAsCalendar
3
- def acts_as_calendar(options = {})
6
+ def acts_as_calendar(_options = {})
4
7
  acts_as_ownable
5
8
 
6
9
  validates_presence_of :name, :slug
@@ -13,17 +16,13 @@ module DateBook
13
16
  has_many :events, dependent: :destroy
14
17
 
15
18
  include InstanceMethods
16
- extend ClassMethods
17
19
  end
18
20
 
21
+ # Instance Methods
19
22
  module InstanceMethods
20
23
  def event_occurrences
21
24
  events.as_occurrences.ascending
22
25
  end
23
26
  end
24
-
25
- module ClassMethods
26
- end
27
-
28
27
  end
29
28
  end
@@ -1,6 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DateBook
4
+ # Mixin to allow acts_as_event behavior in Event model
2
5
  module ActsAsEvent
3
- def acts_as_event(options = {})
6
+ # rubocop:disable Metrics/AbcSize
7
+ # rubocop:disable Metrics/MethodLength
8
+ def acts_as_event(_options = {})
4
9
  acts_as_ownable
5
10
 
6
11
  delegate :all_day, :duration, to: :schedule
@@ -21,20 +26,26 @@ module DateBook
21
26
  accepts_nested_attributes_for :schedule
22
27
 
23
28
  # Scopes
24
- scope :ending_after, -> (start_date) {
29
+ scope :ending_after, (lambda do |start_date|
25
30
  where id: ::EventOccurrence.ending_after(start_date).event_ids
26
- }
27
- scope :starting_before, -> (end_date) {
31
+ end)
32
+ scope :starting_before, (lambda do |end_date|
28
33
  where id: ::EventOccurrence.starting_before(end_date).event_ids
29
- }
34
+ end)
30
35
 
31
36
  include InstanceMethods
32
37
  extend ClassMethods
33
38
  end
39
+ # rubocop:enable Metrics/AbcSize
40
+ # rubocop:enable Metrics/MethodLength
34
41
 
42
+ # Instance Methods
35
43
  module InstanceMethods
36
44
  def schedule
37
- super || build_schedule(date: Time.now.to_date, time: Time.now.to_s(:time))
45
+ super || build_schedule(
46
+ date: Time.now.to_date,
47
+ time: Time.now.to_s(:time)
48
+ )
38
49
  end
39
50
 
40
51
  def previous_occurrence(occurrence = nil)
@@ -48,19 +59,29 @@ module DateBook
48
59
  end
49
60
 
50
61
  def url(occurrence = nil)
51
- DateBook::Engine.routes.url_helpers.calendar_event_path(calendar, slug, occurrence_id: occurrence.id)
62
+ DateBook::Engine
63
+ .routes
64
+ .url_helpers
65
+ .calendar_event_path(calendar, slug, occurrence_id: occurrence&.id)
52
66
  end
53
67
 
54
68
  def popover_url(occurrence = nil)
55
- DateBook::Engine.routes.url_helpers.popover_calendar_event_path(calendar, slug, occurrence_id: occurrence.id)
69
+ DateBook::Engine
70
+ .routes
71
+ .url_helpers
72
+ .popover_calendar_event_path(
73
+ calendar,
74
+ slug,
75
+ occurrence_id: occurrence&.id
76
+ )
56
77
  end
57
78
  end
58
79
 
80
+ # Class Methods
59
81
  module ClassMethods
60
82
  def as_occurrences
61
83
  ::EventOccurrence.for_schedulables('Event', ids)
62
84
  end
63
85
  end
64
-
65
86
  end
66
87
  end
@@ -1,6 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DateBook
4
+ # Mixin to allow acts_as_event_occurrence behavior in EventOccurrence model
2
5
  module ActsAsEventOccurrence
3
- def acts_as_event_occurrence(options = {})
6
+ # rubocop:disable Metrics/AbcSize
7
+ # rubocop:disable Metrics/MethodLength
8
+ def acts_as_event_occurrence(_options = {})
4
9
  before_save :set_end_date
5
10
 
6
11
  alias_attribute :start_date, :date
@@ -10,19 +15,26 @@ module DateBook
10
15
  delegate :schedule, to: :schedulable
11
16
 
12
17
  # Scopes
13
- scope :remaining, -> { where('date >= ?',Time.now) }
14
- scope :previous, -> { where('date < ?',Time.now) }
15
- scope :ending_after, -> (start_date) { (where 'end_date >= ?', start_date) }
16
- scope :starting_before, -> (end_date) { where 'date < ?', end_date }
18
+ scope :remaining, -> { where('date >= ?', Time.now) }
19
+ scope :previous, -> { where('date < ?', Time.now) }
20
+ scope :ending_after, (lambda do |start_date|
21
+ (where 'end_date >= ?', start_date)
22
+ end)
23
+ scope :starting_before, ->(end_date) { where 'date < ?', end_date }
17
24
  scope :for_events, -> { where(schedulable_type: 'Event') }
18
- scope :for_schedulables, -> (model_name, ids) { where(schedulable_type: model_name).where('schedulable_id IN (?)', ids) }
25
+ scope :for_schedulables, (lambda do |model_name, ids|
26
+ where(schedulable_type: model_name).where('schedulable_id IN (?)', ids)
27
+ end)
19
28
  scope :ascending, -> { order date: :asc }
20
29
  scope :descending, -> { order date: :desc }
21
30
 
22
31
  include InstanceMethods
23
32
  extend ClassMethods
24
33
  end
34
+ # rubocop:enable Metrics/AbcSize
35
+ # rubocop:enable Metrics/MethodLength
25
36
 
37
+ # Instance Methods
26
38
  module InstanceMethods
27
39
  def url
28
40
  event.url(self)
@@ -39,7 +51,7 @@ module DateBook
39
51
  I18n.localize date, format: :moment_datetime
40
52
  end
41
53
  end
42
- alias_method :start, :start_moment
54
+ alias start start_moment
43
55
 
44
56
  def end_moment
45
57
  if schedule.all_day
@@ -48,7 +60,7 @@ module DateBook
48
60
  I18n.localize end_date, format: :moment_datetime
49
61
  end
50
62
  end
51
- alias_method :end, :end_moment
63
+ alias end end_moment
52
64
 
53
65
  private
54
66
 
@@ -57,11 +69,11 @@ module DateBook
57
69
  end
58
70
  end
59
71
 
72
+ # Class Methods
60
73
  module ClassMethods
61
74
  def event_ids
62
75
  for_events.pluck(:schedulable_id).uniq
63
76
  end
64
77
  end
65
-
66
78
  end
67
79
  end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DateBook
4
+ # Mixin to allow acts_as_ownable behavior in Calendar and Event models
2
5
  module ActsAsOwnable
3
- def acts_as_ownable(options = {})
6
+ def acts_as_ownable(_options = {})
4
7
  # Rolify Gem
5
8
  resourcify
6
9
 
@@ -9,6 +12,7 @@ module DateBook
9
12
  include InstanceMethods
10
13
  end
11
14
 
15
+ # Instance Methods
12
16
  module InstanceMethods
13
17
  def owners
14
18
  User.with_role(:owner, self)
@@ -17,11 +21,13 @@ module DateBook
17
21
  def owners=(revised_owners)
18
22
  # Remove owners not listed in new value
19
23
  owners.each do |owner|
20
- owner.remove_role(:owner, self) unless revised_owners.include? owner
24
+ next if revised_owners.include? owner
25
+ owner.remove_role(:owner, self)
21
26
  end
22
27
  # Add owners not previously held
23
28
  revised_owners.each do |revised_owner|
24
- revised_owner.add_role(:owner, self) unless owners.include? revised_owner
29
+ next if owners.include? revised_owner
30
+ revised_owner.add_role :owner, self
25
31
  end
26
32
  end
27
33
  end
@@ -1,18 +1,17 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DateBook
4
+ # Mixin to allow acts_as_owner behavior in User model
2
5
  module ActsAsOwner
3
- def acts_as_owner(options = {})
6
+ def acts_as_owner(_options = {})
4
7
  include InstanceMethods
5
- extend ClassMethods
6
8
  end
7
9
 
10
+ # Instance Methods
8
11
  module InstanceMethods
9
12
  def calendars
10
13
  Calendar.with_role(:owner, self)
11
14
  end
12
15
  end
13
-
14
- module ClassMethods
15
- end
16
-
17
16
  end
18
17
  end
@@ -1,9 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DateBook
4
+ # Mixin to allow acts_as_schedule behavior in Schedule model
2
5
  module ActsAsSchedule
3
- def acts_as_schedule(options = {})
6
+ def acts_as_schedule(_options = {})
4
7
  include InstanceMethods
5
8
  end
6
9
 
10
+ # Instance Methods
7
11
  module InstanceMethods
8
12
  def duration_attributes
9
13
  OpenStruct.new count: duration_count, unit: duration_unit
@@ -21,8 +25,12 @@ module DateBook
21
25
  end
22
26
 
23
27
  def duration_unit
24
- return 'seconds' if duration == 0
25
- DateBook.configuration.duration_units.select { |x| is_unit? x }.first || 'seconds'
28
+ return 'seconds' if duration.zero?
29
+ DateBook
30
+ .configuration
31
+ .duration_units
32
+ .select { |x| unit_matches? x }
33
+ .first || 'seconds'
26
34
  end
27
35
 
28
36
  def human_date
@@ -35,10 +43,9 @@ module DateBook
35
43
 
36
44
  private
37
45
 
38
- def is_unit?(unit)
39
- duration % 1.send(unit.singularize.to_sym).to_i == 0
46
+ def unit_matches?(unit)
47
+ (duration % 1.send(unit.singularize.to_sym).to_i).zero?
40
48
  end
41
49
  end
42
-
43
50
  end
44
- end
51
+ end
@@ -12,18 +12,21 @@ module DateBook
12
12
  end
13
13
 
14
14
  def self.weekdays
15
- @weekdays ||= Date::DAYNAMES
16
- .map
17
- .with_index do |x, i|
18
- OpenStruct.new(id: i, name: x, slug: x.downcase)
19
- end
20
- .sort_by do |value|
21
- (value.id - week_start_index) % 7
22
- end
15
+ return @weekdays if @weekdays
16
+
17
+ initial_days = Date::DAYNAMES.map.with_index do |x, i|
18
+ OpenStruct.new(id: i, name: x, slug: x.downcase)
19
+ end
20
+
21
+ @weekdays = initial_days.sort_by do |value|
22
+ (value.id - week_start_index) % 7
23
+ end
23
24
  end
24
25
 
25
26
  def self.week_start_index
26
- @week_start_index ||= Date::DAYNAMES.find_index(configuration.week_starts_on)
27
+ @week_start_index ||= Date::DAYNAMES.find_index(
28
+ configuration.week_starts_on
29
+ )
27
30
  end
28
31
 
29
32
  # DateBook Configuration
@@ -36,8 +39,8 @@ module DateBook
36
39
 
37
40
  def initialize
38
41
  self.week_starts_on = 'Sunday'
39
- self.rules = %w(singular daily weekly monthly)
40
- self.duration_units = %w(years months weeks days hours minutes seconds)
42
+ self.rules = %w[singular daily weekly monthly]
43
+ self.duration_units = %w[years months weeks days hours minutes seconds]
41
44
  end
42
45
  end
43
46
  end
@@ -19,19 +19,21 @@ module DateBook
19
19
  end
20
20
 
21
21
  initializer 'date_book.assets.precompile' do |app|
22
- app.config.assets.precompile += %w(
22
+ app.config.assets.precompile += %w[
23
23
  date_book.js date_book.css bootstrap-wysiwyg/bootstrap-wysiwyg.css
24
24
  bootstrap-wysiwyg.js jquery_nested_form.js jquery_nested_form.js
25
25
  bootstrap-datetimepicker.js bootstrap-datetimepicker.css all-day-bg.png
26
- part-day-bg.png
27
- )
26
+ part-day-bg.png moment.js glyphicons-halflings-regular.eot
27
+ glyphicons-halflings-regular.svg glyphicons-halflings-regular.ttf
28
+ glyphicons-halflings-regular.woff glyphicons-halflings-regular.woff2
29
+ ]
28
30
  end
29
31
 
30
- initializer "date_book.add_middleware" do |app|
32
+ initializer 'date_book.add_middleware' do |app|
31
33
  app.config.middleware.insert_before 0, Rack::Cors do
32
34
  allow do
33
35
  origins %r{\Ahttp://localhost:3000\z}
34
- resource '*', :headers => :any, :methods => [:get, :post, :options]
36
+ resource '*', headers: :any, methods: %i[get post options]
35
37
  end
36
38
  end
37
39
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Message Train module
2
4
  module DateBook
3
5
  VERSION = File.read(File.expand_path('../../../VERSION', __FILE__))
@@ -4,8 +4,8 @@ module DateBook
4
4
  # DateBook Install Generator
5
5
  class InstallGenerator < Rails::Generators::Base
6
6
  argument :user_model_name, type: :string, default: 'User'
7
- source_root File.expand_path('../templates', __FILE__)
8
- require File.expand_path('../../utils', __FILE__)
7
+ source_root DateBook::Engine.root.join('lib/generators/date_book/install/templates')
8
+ require DateBook::Engine.root.join('lib/generators/date_book/utils')
9
9
  include Generators::Utils
10
10
  include Rails::Generators::Migration
11
11
 
@@ -21,7 +21,7 @@ module DateBook
21
21
  "install it separately, I'll do that now.", :magenta
22
22
  )
23
23
  generate('devise:install')
24
- generate('devise User')
24
+ generate("devise #{user_model_name}")
25
25
  end
26
26
 
27
27
  def install_cancan
@@ -39,7 +39,23 @@ module DateBook
39
39
  'up now.',
40
40
  :magenta
41
41
  )
42
- generate('rolify', 'Role User')
42
+ generate('rolify', "Role #{user_model_name}")
43
+ end
44
+
45
+ def add_to_user
46
+ output(
47
+ "Adding DateBook to your #{user_model_name.downcase} model",
48
+ :magenta
49
+ )
50
+ gsub_file "app/models/#{user_model_name.downcase}.rb", /acts_as_owner/, ''
51
+ inject_into_file(
52
+ "app/models/#{user_model_name.downcase}.rb",
53
+ after: "rolify\n"
54
+ ) do
55
+ <<-'RUBY'
56
+ acts_as_owner
57
+ RUBY
58
+ end
43
59
  end
44
60
 
45
61
  def install_bootstrap_leather
@@ -55,7 +71,10 @@ module DateBook
55
71
  "Next, you'll need an initializer for Date Book.",
56
72
  :magenta
57
73
  )
58
- template 'config/initializers/date_book.rb', 'config/initializers/date_book.rb'
74
+ template(
75
+ 'config/initializers/date_book.rb',
76
+ 'config/initializers/date_book.rb'
77
+ )
59
78
  end
60
79
 
61
80
  def add_models
@@ -65,22 +84,10 @@ module DateBook
65
84
  )
66
85
  template 'app/models/calendar.rb', 'app/models/calendar.rb'
67
86
  template 'app/models/event.rb', 'app/models/event.rb'
68
- template 'app/models/event_occurrence.rb', 'app/models/event_occurrence.rb'
69
- template 'app/models/schedule.rb', 'app/models/schedule.rb'
70
- end
71
-
72
- def add_to_user
73
- output 'Adding DateBook to your User model', :magenta
74
- gsub_file(
75
- 'app/models/user.rb',
76
- %r{acts_as_owner},
77
- ''
87
+ template(
88
+ 'app/models/event_occurrence.rb', 'app/models/event_occurrence.rb'
78
89
  )
79
- inject_into_file 'app/models/user.rb', after: "rolify\n" do
80
- <<-'RUBY'
81
- acts_as_owner
82
- RUBY
83
- end
90
+ template 'app/models/schedule.rb', 'app/models/schedule.rb'
84
91
  end
85
92
 
86
93
  def add_migrations
@@ -88,15 +95,6 @@ RUBY
88
95
  rake 'date_book:install:migrations'
89
96
  end
90
97
 
91
- # def add_to_model
92
- # output 'Adding DateBook to your User model', :magenta
93
- # gsub_file 'app/models/user.rb', /^\n subscriber$/, ''
94
- # inject_into_file(
95
- # 'app/models/user.rb', "\n subscriber",
96
- # after: 'class User < ActiveRecord::Base'
97
- # )
98
- # end
99
-
100
98
  def add_route
101
99
  output 'Adding DateBook to your routes.rb file', :magenta
102
100
  gsub_file(