statusbot-models 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile.gem ADDED
@@ -0,0 +1,21 @@
1
+ # this is the rakefile used by the gem
2
+ require 'standalone_migrations'
3
+ require 'foreigner'
4
+
5
+ StandaloneMigrations.on_loaded do
6
+ Foreigner.load
7
+ end
8
+
9
+ StandaloneMigrations::Tasks.load_tasks
10
+
11
+ desc 'Interactive console with gem pre-loaded'
12
+ task :console => :environment do
13
+ require 'irb'
14
+ require 'irb/completion'
15
+ require 'ruby-debug'
16
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
17
+ require 'statusbot/models'
18
+ Statusbot::Models.connect
19
+ ARGV.clear
20
+ IRB.start
21
+ end
@@ -0,0 +1,8 @@
1
+ class Goal < ActiveRecord::Base
2
+
3
+ validates_presence_of :description
4
+ validates_presence_of :user
5
+
6
+ belongs_to :user
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ class Ping < ActiveRecord::Base
2
+
3
+ validates_presence_of :description
4
+ validates_presence_of :wait
5
+
6
+ belongs_to :wait
7
+
8
+ end
@@ -0,0 +1,18 @@
1
+ class Update < ActiveRecord::Base
2
+
3
+ validates_presence_of :description
4
+ validates_presence_of :user
5
+ validates_presence_of :start_time
6
+
7
+ belongs_to :user
8
+
9
+ validate :stop_time_after_start_time
10
+
11
+ private
12
+
13
+ def stop_time_after_start_time
14
+ unless stop_time.nil? || start_time.nil?
15
+ errors.add :stop_time, "stop_time must be after start_time" if stop_time < start_time
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ class User < ActiveRecord::Base
2
+
3
+ validates_presence_of :first_name
4
+ validates_presence_of :last_name
5
+ validates_presence_of :email
6
+
7
+ has_many :updates
8
+ has_many :waits
9
+ has_many :goals
10
+
11
+ end
@@ -0,0 +1,9 @@
1
+ class Wait < ActiveRecord::Base
2
+
3
+ validates_presence_of :description
4
+ validates_presence_of :user
5
+
6
+ belongs_to :user
7
+ has_many :pings
8
+
9
+ end
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # in the event that we are not doing this as part of a rails
4
+ # plugin, then we can interact with the database using standalone-migrations
5
+ # gem. this helper will create a temporary .standalone_migration
6
+ # configuration file that points the migration and seed data to this gem,
7
+ # wherever it may be installed. the db configuration will point at the
8
+ # default location.
9
+ gem_dir = File.expand_path("..", File.dirname(__FILE__))
10
+ config_file = '.standalone_migrations'
11
+
12
+ File.open(config_file, "w") do |file|
13
+ file.write(<<-EOS
14
+ db:
15
+ seeds: #{File.join(gem_dir, 'db', 'seeds.rb')}
16
+ migrate: #{File.join(gem_dir, 'db', 'migrate')}
17
+ EOS
18
+ )
19
+ end
20
+
21
+ # Run the rakefile now that the correct configuration information
22
+ # is in place
23
+ system "rake -f #{File.join(gem_dir, 'Rakefile.gem')} #{ARGV.join(' ')}"
24
+
25
+ # And remove the file since it is no longer required
26
+ File.delete(config_file) if File.exist?(config_file)
@@ -0,0 +1,13 @@
1
+ class CreateUsers < ActiveRecord::Migration
2
+ def change
3
+ create_table :users do |t|
4
+ t.string :first_name, :null => false
5
+ t.string :last_name, :null => false
6
+ t.string :email, :null => false
7
+
8
+ t.timestamps
9
+ end
10
+
11
+ add_index :users, :email, :unique => true, :name => 'idx_unique_emails'
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ class CreateUpdates < ActiveRecord::Migration
2
+ def change
3
+ create_table :updates do |t|
4
+ t.references :user
5
+ t.string :description, :null => false
6
+ t.datetime :start_time, :null => false
7
+ t.datetime :stop_time
8
+
9
+ t.timestamps
10
+ end
11
+
12
+ add_foreign_key :updates, :users, :dependent => :delete
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ class CreateGoals < ActiveRecord::Migration
2
+ def change
3
+ create_table :goals do |t|
4
+ t.references :user
5
+ t.string :description, :null => false
6
+
7
+ t.timestamps
8
+ end
9
+
10
+ add_foreign_key :goals, :users, :dependent => :delete
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class CreateWaits < ActiveRecord::Migration
2
+ def change
3
+ create_table :waits do |t|
4
+ t.references :user
5
+ t.string :description, :null => false
6
+
7
+ t.timestamps
8
+ end
9
+
10
+ add_foreign_key :waits, :users, :dependent => :delete
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class CreatePings < ActiveRecord::Migration
2
+ def change
3
+ create_table :pings do |t|
4
+ t.references :wait
5
+ t.string :description, :null => false
6
+
7
+ t.timestamps
8
+ end
9
+
10
+ add_foreign_key :pings, :waits, :dependent => :delete
11
+ end
12
+ end
@@ -0,0 +1,33 @@
1
+ require "statusbot/models/version"
2
+ require "active_record"
3
+ require "yaml"
4
+
5
+ # Do not load this library if this is not rails
6
+ if defined?(Rails)
7
+ require "foreigner"
8
+ require "statusbot/models/engine"
9
+ end
10
+
11
+ module Statusbot
12
+ module Models
13
+ class MissingConfigurationError < StandardError
14
+ end
15
+
16
+ def self.connect(configuration='db/config.yml', load_models=true)
17
+ environment = ENV['RAILS_ENV'] || 'development'
18
+ project_root = File.dirname(File.absolute_path(__FILE__))
19
+
20
+ unless File.exist?(configuration)
21
+ raise MissingConfigurationError.new("could not find '#{configuration}'")
22
+ end
23
+
24
+ if load_models
25
+ Dir.glob(File.expand_path(project_root + "/../../app/models") + "/*.rb").each{ |f| require f }
26
+ end
27
+
28
+
29
+ connection_details = YAML::load(File.open(configuration))
30
+ ActiveRecord::Base.establish_connection(connection_details[environment])
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,3 @@
1
+ class Engine < ::Rails::Engine
2
+ isolate_namespace Statusbot::Models
3
+ end
@@ -0,0 +1,5 @@
1
+ module Statusbot
2
+ module Models
3
+ VERSION = "0.5.0"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,325 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: statusbot-models
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Eric Hayes
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-08-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activerecord
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: ejhayes_standalone_migrations
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 2.2.0
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 2.2.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: mysql2
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: sqlite3
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: foreigner
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: bundler
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: '1.6'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: '1.6'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rake
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: debugger
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: rspec
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ~>
148
+ - !ruby/object:Gem::Version
149
+ version: 2.14.1
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ~>
156
+ - !ruby/object:Gem::Version
157
+ version: 2.14.1
158
+ - !ruby/object:Gem::Dependency
159
+ name: shoulda-matchers
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: simplecov
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ~>
180
+ - !ruby/object:Gem::Version
181
+ version: 0.7.1
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ~>
188
+ - !ruby/object:Gem::Version
189
+ version: 0.7.1
190
+ - !ruby/object:Gem::Dependency
191
+ name: foreigner-matcher
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ - !ruby/object:Gem::Dependency
207
+ name: factory_girl
208
+ requirement: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ - !ruby/object:Gem::Dependency
223
+ name: faker
224
+ requirement: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - ! '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ! '>='
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ - !ruby/object:Gem::Dependency
239
+ name: database_cleaner
240
+ requirement: !ruby/object:Gem::Requirement
241
+ none: false
242
+ requirements:
243
+ - - ! '>='
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - ! '>='
252
+ - !ruby/object:Gem::Version
253
+ version: '0'
254
+ - !ruby/object:Gem::Dependency
255
+ name: foreigner-matcher
256
+ requirement: !ruby/object:Gem::Requirement
257
+ none: false
258
+ requirements:
259
+ - - ~>
260
+ - !ruby/object:Gem::Version
261
+ version: 0.3.0
262
+ type: :development
263
+ prerelease: false
264
+ version_requirements: !ruby/object:Gem::Requirement
265
+ none: false
266
+ requirements:
267
+ - - ~>
268
+ - !ruby/object:Gem::Version
269
+ version: 0.3.0
270
+ description: Contains all of the models used by statusbot. Makes it easy for smaller
271
+ pieces to use the same models.
272
+ email:
273
+ - eric@deployfx.com
274
+ executables:
275
+ - statusbot-models
276
+ extensions: []
277
+ extra_rdoc_files: []
278
+ files:
279
+ - lib/statusbot/models/engine.rb
280
+ - lib/statusbot/models/version.rb
281
+ - lib/statusbot/models.rb
282
+ - app/models/goal.rb
283
+ - app/models/ping.rb
284
+ - app/models/update.rb
285
+ - app/models/user.rb
286
+ - app/models/wait.rb
287
+ - db/migrate/20140809002507_create_users.rb
288
+ - db/migrate/20140809180458_create_updates.rb
289
+ - db/migrate/20140822053816_create_goals.rb
290
+ - db/migrate/20140822054416_create_waits.rb
291
+ - db/migrate/20140822055355_create_pings.rb
292
+ - bin/statusbot-models
293
+ - Rakefile.gem
294
+ homepage: http://www.statusbot.me
295
+ licenses:
296
+ - MIT
297
+ post_install_message:
298
+ rdoc_options: []
299
+ require_paths:
300
+ - lib
301
+ required_ruby_version: !ruby/object:Gem::Requirement
302
+ none: false
303
+ requirements:
304
+ - - ! '>='
305
+ - !ruby/object:Gem::Version
306
+ version: '0'
307
+ segments:
308
+ - 0
309
+ hash: -987629753129413959
310
+ required_rubygems_version: !ruby/object:Gem::Requirement
311
+ none: false
312
+ requirements:
313
+ - - ! '>='
314
+ - !ruby/object:Gem::Version
315
+ version: '0'
316
+ segments:
317
+ - 0
318
+ hash: -987629753129413959
319
+ requirements: []
320
+ rubyforge_project:
321
+ rubygems_version: 1.8.23.2
322
+ signing_key:
323
+ specification_version: 3
324
+ summary: Contains the models used by statusbot.
325
+ test_files: []