atech 1.0.17 → 1.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,6 +17,11 @@ module ActiveRecord
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
+
def destroy(*args)
|
21
|
+
puts "\e[31mdestroyed\e[0m #{self.class.name} ##{self.id}"
|
22
|
+
super(*args)
|
23
|
+
end
|
24
|
+
|
20
25
|
def self.seedable?
|
21
26
|
actual_count = self.count.to_i
|
22
27
|
return (actual_count == 0) unless Rails.env.development?
|
data/lib/atech/helpers.rb
CHANGED
@@ -26,7 +26,7 @@ module Atech
|
|
26
26
|
attr_accessor :networks
|
27
27
|
|
28
28
|
def networks
|
29
|
-
@networks ||= ['127.0.0.1/32', '109.224.145.104/29', '
|
29
|
+
@networks ||= ['127.0.0.1/32', '109.224.145.104/29', '188.65.183.34/32', '10.0.1.0/24']
|
30
30
|
end
|
31
31
|
|
32
32
|
def approved_ip?(requested_ip)
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Atech
|
2
|
+
## The aTech stats reporter return information about the application which
|
3
|
+
## can be access by accessing the stats URL. This should be configured in your
|
4
|
+
## application initializer.
|
5
|
+
##
|
6
|
+
## Atech::StatsReporter.application_name = 'my-application'
|
7
|
+
## Atech::StatsReporter.application_key = 'your random key here'
|
8
|
+
## Atech::StatsReporter.stats = Proc.new do
|
9
|
+
## {
|
10
|
+
## :last_activity => Event.last.created_at,
|
11
|
+
## :projects => Project.count,
|
12
|
+
## :repositories => Repositories::Repository.count,
|
13
|
+
## :disk_usage => Repositories::Repository.sum(:disk_usage)
|
14
|
+
## }
|
15
|
+
## end
|
16
|
+
##
|
17
|
+
class StatsReporter
|
18
|
+
|
19
|
+
class << self
|
20
|
+
attr_accessor :application_name
|
21
|
+
attr_accessor :application_key
|
22
|
+
attr_accessor :stats
|
23
|
+
|
24
|
+
def application_name
|
25
|
+
@application_name ||= "Application"
|
26
|
+
end
|
27
|
+
|
28
|
+
def stats
|
29
|
+
@stats ||= Proc.new do
|
30
|
+
Hash.new
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def repo_stats
|
35
|
+
@repo_stats ||= {
|
36
|
+
:ref => `git log --pretty='%H' -n 1`.chomp,
|
37
|
+
:path => `git remote show -n origin | grep Fetch`.split(/\:\s*/, 2).last.strip
|
38
|
+
}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def call(env)
|
43
|
+
dup._call(env)
|
44
|
+
end
|
45
|
+
|
46
|
+
def _call(env)
|
47
|
+
req = Rack::Request.new(env)
|
48
|
+
|
49
|
+
if req.params['key'] != self.class.application_key
|
50
|
+
return [403, {}, ["Access Denied"]]
|
51
|
+
end
|
52
|
+
|
53
|
+
hash = {
|
54
|
+
:name => self.class.application_name,
|
55
|
+
:repo => self.class.repo_stats,
|
56
|
+
:props => self.class.stats.call
|
57
|
+
}
|
58
|
+
|
59
|
+
[200, {}, [ActiveSupport::JSON.encode(hash)]]
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
data/lib/atech/user_agent.rb
CHANGED
@@ -17,7 +17,7 @@ require 'active_support/string_inquirer'
|
|
17
17
|
if defined?(ActionController::Request)
|
18
18
|
class ActionController::Request
|
19
19
|
def user_agent
|
20
|
-
Atech::UserAgent.new(env['HTTP_USER_AGENT'])
|
20
|
+
env['HTTP_USER_AGENT'].is_a?(String) ? Atech::UserAgent.new(env['HTTP_USER_AGENT']) : nil
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -30,6 +30,8 @@ module Atech
|
|
30
30
|
when /(windows)|(win(\d{2}))/i then :windows
|
31
31
|
when /linux/i then :linux
|
32
32
|
when /macintosh/i then :mac
|
33
|
+
when /(iPhone)|(iPod)/ then :iphone
|
34
|
+
when /iPad/ then :ipad
|
33
35
|
else :unknown
|
34
36
|
end.to_s)
|
35
37
|
end
|
@@ -48,6 +50,7 @@ module Atech
|
|
48
50
|
@name_and_version ||= case self
|
49
51
|
when /MSIE (\d+)/i then [:ie, $1.to_i]
|
50
52
|
when /Firefox\/(\d+)/ then [:firefox, $1.to_i]
|
53
|
+
when /Version\/(\d+).*Mobile\/.+Safari/ then [:mobile_safari, $1.to_i]
|
51
54
|
when /Chrome\/(\d+)/ then [:chrome, $1.to_i]
|
52
55
|
when /Version\/(\d+).*Safari\//i then [:safari, $1.to_i]
|
53
56
|
else [:unknown, 0]
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: atech
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 51
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 18
|
10
|
+
version: 1.0.18
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- aTech Media
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-02-25 00:00:00 +00:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -29,13 +29,14 @@ extra_rdoc_files: []
|
|
29
29
|
|
30
30
|
files:
|
31
31
|
- lib/atech/base.rb
|
32
|
-
- lib/atech/
|
32
|
+
- lib/atech/extensions/active_record.rb
|
33
33
|
- lib/atech/extensions/controller_tests.rb
|
34
34
|
- lib/atech/extensions/seeds.rb
|
35
35
|
- lib/atech/extensions/string.rb
|
36
36
|
- lib/atech/helpers.rb
|
37
37
|
- lib/atech/network_restrictions.rb
|
38
38
|
- lib/atech/record_identifier.rb
|
39
|
+
- lib/atech/stats_reporter.rb
|
39
40
|
- lib/atech/user_agent.rb
|
40
41
|
has_rdoc: true
|
41
42
|
homepage: http://github.com/atech/atech
|
data/lib/atech/configuration.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
## This module allows you to create application specific configuration options.
|
2
|
-
## You can define a block to set your variables or you can simply set them
|
3
|
-
## on an instance of the object. The application should define this to begin
|
4
|
-
## with (`Codebase.settings = Atech::Configuration.new`) or something.
|
5
|
-
|
6
|
-
module Atech
|
7
|
-
class Configuration
|
8
|
-
|
9
|
-
attr_reader :attributes
|
10
|
-
|
11
|
-
def initialize(attributes = Hash.new)
|
12
|
-
@attributes = attributes
|
13
|
-
end
|
14
|
-
|
15
|
-
def setup!(&block)
|
16
|
-
block.call(self)
|
17
|
-
end
|
18
|
-
|
19
|
-
def method_missing(method_name, value = nil)
|
20
|
-
method_name = method_name.to_s
|
21
|
-
if method_name[-1,1] == '='
|
22
|
-
method_name.gsub!(/\=\z/, '')
|
23
|
-
attributes[method_name] = value
|
24
|
-
else
|
25
|
-
question = false
|
26
|
-
if method_name =~ /\?\z/
|
27
|
-
method_name.gsub!(/\?\z/, '')
|
28
|
-
question = true
|
29
|
-
end
|
30
|
-
|
31
|
-
if attributes.keys.include?(method_name)
|
32
|
-
if question
|
33
|
-
!!attributes[method_name]
|
34
|
-
else
|
35
|
-
attributes[method_name]
|
36
|
-
end
|
37
|
-
else
|
38
|
-
raise NoMethodError, "undefined configurtion attribute `#{method_name}' for #{self}"
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|