perkins 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -0
  3. data/.ruby-version +1 -0
  4. data/.vagrant/machines/default/virtualbox/action_provision +1 -0
  5. data/.vagrant/machines/default/virtualbox/action_set_name +1 -0
  6. data/.vagrant/machines/default/virtualbox/id +1 -0
  7. data/Gemfile +0 -1
  8. data/README.md +11 -4
  9. data/Rakefile +3 -2
  10. data/TODO.md +2 -2
  11. data/Vagrantfile +53 -0
  12. data/db/migrate/20150220143050_add_status_fields_to_repos.rb +11 -0
  13. data/db/schema.rb +3 -1
  14. data/examples/Gemfile +4 -0
  15. data/examples/Gemfile.lock +164 -0
  16. data/examples/Procfile +4 -0
  17. data/examples/boot.rb +15 -0
  18. data/examples/config.ru +22 -0
  19. data/examples/database.yml +2 -2
  20. data/examples/sidekiq.yml +9 -0
  21. data/lib/core_ext/string/color.rb +22 -0
  22. data/lib/perkins/application.rb +27 -3
  23. data/lib/perkins/assets/images/error.gif +0 -0
  24. data/lib/perkins/assets/images/working.gif +0 -0
  25. data/lib/perkins/assets/javascripts/app.js +17 -1
  26. data/lib/perkins/assets/javascripts/config.js.coffee +14 -0
  27. data/lib/perkins/assets/javascripts/log_view.js.coffee +1 -2
  28. data/lib/perkins/assets/javascripts/perkings.js.coffee +129 -20
  29. data/lib/perkins/assets/javascripts/perkins/helpers.js.coffee +21 -0
  30. data/lib/perkins/assets/javascripts/perkins/m/models.js.coffee +50 -0
  31. data/lib/perkins/assets/javascripts/perkins/router.js.coffee +10 -0
  32. data/lib/perkins/assets/javascripts/perkins/v/dashboard.js.coffee +17 -0
  33. data/lib/perkins/assets/javascripts/perkins/v/err.js.coffee +12 -0
  34. data/lib/perkins/assets/javascripts/perkins/v/menu.js.coffee +10 -0
  35. data/lib/perkins/assets/javascripts/perkins/v/my_repos.js.coffee +41 -0
  36. data/lib/perkins/assets/javascripts/perkins/v/orgs.js.coffee +39 -0
  37. data/lib/perkins/assets/javascripts/perkins/v/profile.js.coffee +20 -0
  38. data/lib/perkins/assets/javascripts/perkins/v/repo.js.coffee +192 -0
  39. data/lib/perkins/assets/javascripts/perkins/v/sidebar.js.coffee +33 -0
  40. data/lib/perkins/assets/javascripts/templates/dashboard.hamlc +11 -0
  41. data/lib/perkins/assets/javascripts/templates/error.hamlc +22 -0
  42. data/lib/perkins/assets/javascripts/templates/menu.hamlc +18 -0
  43. data/lib/perkins/assets/javascripts/templates/org.hamlc +77 -0
  44. data/lib/perkins/assets/javascripts/templates/profile.hamlc +28 -0
  45. data/lib/perkins/assets/javascripts/templates/repo.hamlc +37 -0
  46. data/lib/perkins/assets/javascripts/templates/repos/build_row.hamlc +19 -0
  47. data/lib/perkins/assets/javascripts/templates/repos/builds.hamlc +25 -0
  48. data/lib/perkins/assets/javascripts/templates/repos/config.hamlc +77 -0
  49. data/lib/perkins/assets/javascripts/templates/repos/gb_repo.hamlc +31 -0
  50. data/lib/perkins/assets/javascripts/templates/repos/github.hamlc +7 -0
  51. data/lib/perkins/assets/javascripts/templates/repos/menu.hamlc +17 -0
  52. data/lib/perkins/assets/javascripts/templates/repos/report_detail.hamlc +53 -0
  53. data/lib/perkins/assets/javascripts/templates/sidebar.hamlc +14 -0
  54. data/lib/perkins/assets/javascripts/templates/sidebar_repo.hamlc +4 -0
  55. data/lib/perkins/assets/javascripts/vendor/backbone-min.js +2 -0
  56. data/lib/perkins/assets/javascripts/vendor/backbone.marionette.js +2891 -0
  57. data/lib/perkins/assets/javascripts/vendor/hamlcoffee.js.coffee.erb +138 -0
  58. data/lib/perkins/assets/javascripts/vendor/livequery.jquery.js +8 -0
  59. data/lib/perkins/assets/javascripts/vendor/log.js +1 -1
  60. data/lib/perkins/assets/javascripts/vendor/md5.js +207 -0
  61. data/lib/perkins/assets/javascripts/vendor/nprogress.js +476 -0
  62. data/lib/perkins/assets/javascripts/vendor/underscore.js +6 -0
  63. data/lib/perkins/assets/stylesheets/app.css +3 -0
  64. data/lib/perkins/assets/stylesheets/bootstrap-overrides.css.scss +13 -0
  65. data/lib/perkins/assets/stylesheets/styles.css.scss +30 -3
  66. data/lib/perkins/assets/stylesheets/vendor/nprogress.css +74 -0
  67. data/lib/perkins/assets.rb +42 -0
  68. data/lib/perkins/build/script/ruby.rb +1 -1
  69. data/lib/perkins/build_report.rb +13 -0
  70. data/lib/perkins/{worker.rb → build_worker.rb} +9 -5
  71. data/lib/perkins/cli.rb +4 -2
  72. data/lib/perkins/commit.rb +8 -1
  73. data/lib/perkins/git_loader_worker.rb +29 -0
  74. data/lib/perkins/repo.rb +23 -9
  75. data/lib/perkins/runner.rb +16 -25
  76. data/lib/perkins/server.rb +121 -116
  77. data/lib/perkins/version.rb +1 -1
  78. data/lib/perkins/views/builds.haml +0 -3
  79. data/lib/perkins/views/layout.haml +25 -36
  80. data/lib/perkins/views/menu.haml +1 -1
  81. data/lib/perkins/views/repos/github.haml +0 -31
  82. data/lib/perkins/views/repos/repo.haml +1 -1
  83. data/lib/perkins.rb +4 -2
  84. data/perkins.gemspec +5 -2
  85. data/spec/lib/repo_spec.rb +27 -6
  86. data/spec/lib/runner_spec.rb +1 -0
  87. data/spec/lib/server_spec.rb +6 -23
  88. data/spec/spec_helper.rb +14 -3
  89. metadata +160 -70
  90. data/examples/config.rb +0 -12
  91. data/examples/mongo.yml +0 -13
  92. data/lib/perkins/listener.rb +0 -38
  93. data/spec/lib/listener_spec.rb +0 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 65cad89e186bf43bf4f625869e5ef7012d1bd142
4
- data.tar.gz: e30c3e0929a4c1a2607f774faa560bf85905c651
3
+ metadata.gz: e221f76f15d35aed4024e928ad9a110cd1cc35c7
4
+ data.tar.gz: 8949ff14e44a8830713eb5beaa8f1139cdaf7e05
5
5
  SHA512:
6
- metadata.gz: 4c16b152d0eafe6dbd59e69f2ac50751f11c7e046dae46b16b3423e838382817d20edf1a52bf095633b7c8322b24bd3a82a51c11c62a8f480fe921bf755d3cc7
7
- data.tar.gz: 48ab52ccd96358d3e98a34df3c7bc53b22509a6e25b69f2b74763b2ff4ad64cdd26d455e4624801bcd49cbcc8a053194d02f73c9bb7530d164c22805b5294c3d
6
+ metadata.gz: c5972841aac46d31ecde60b81b5a2144d8d3bf95e689db05d32f9e9f871b665219fa3a211f1efdd85941ba76864c0f0f5d8ee5c24e3f137bfa9e1b34ded08940
7
+ data.tar.gz: e44f197ad2e3f504eb355221af2c6a1b934cef2a31e1b1f5ef4071bca4d63756840e6cb2221afaf14487c3b3429da0aa6c7c08c338b5c63c9cbc359f61732143
data/.gitignore CHANGED
@@ -13,7 +13,12 @@
13
13
  *.a
14
14
  mkmf.log
15
15
  .env
16
+ /examples/.env
17
+ /examples/tmp
18
+ /examples/log
16
19
 
17
20
  /db/*.sqlite3
18
21
  /db/*.sqlite3-journal
19
22
  /log/*.log
23
+
24
+ Vagrantfile
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.1.0
@@ -0,0 +1 @@
1
+ 1.5:0278f96b-581b-4d5c-8d27-3c5753af89a6
@@ -0,0 +1 @@
1
+ 1424370216
@@ -0,0 +1 @@
1
+ 0278f96b-581b-4d5c-8d27-3c5753af89a6
data/Gemfile CHANGED
@@ -3,7 +3,6 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in perkins.gemspec
4
4
  gemspec
5
5
 
6
- gem "debugger"
7
6
  gem "pry"
8
7
 
9
8
  group :test do
data/README.md CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
  Behind the scenes perkins uses a slightly modified version of *travis-build* library and uses *Travis-yaml* gem to parse the .travis.yml files on existing repos. Also it integrates the Log.js library to display the build log the same way Travis does.
6
6
 
7
+ ![screen shot 2015-04-14 at 7 02 02 pm](https://cloud.githubusercontent.com/assets/11976/8642513/971455da-28fb-11e5-8b9b-3741aa499655.png)
8
+
7
9
  Said that, big kudos to Travis team for developing such an art piece and save us months of work to develop those components
8
10
 
9
11
  ## Why not use Travis open source app ?
@@ -17,11 +19,12 @@ Perkins is at experimental fase, use at your own risk.
17
19
  ## Features:
18
20
 
19
21
  + Github webhook receiver.
20
- + Github user & orgs repo selector.
21
- + .travis.yml detection
22
- + Build for ruby (supports bundler and rvm or chruby)
23
- + Build for Go.
22
+ + Github repo selector from user & organizations.
23
+ + .travis.yml detection.
24
+ + Build support for ruby (supports bundler and rvm or chruby).
25
+ + Build support for Go.
24
26
  + Addition of more languages should be trivial thanks to travis-build.
27
+ + Badge generation through https://img.shields.io/ service.
25
28
 
26
29
  ## Installation
27
30
 
@@ -51,6 +54,10 @@ Perkins.application() do |app|
51
54
  end
52
55
  ```
53
56
 
57
+ ## Config oauth app in github
58
+
59
+ https://github.com/settings/applications
60
+
54
61
  ## Webhooks
55
62
 
56
63
  To set the webhook for a repo you can go to github repo admin or visit a perkins repo on `youapp.com/repos/my/repo/config`
data/Rakefile CHANGED
@@ -16,12 +16,13 @@ RSpec::Core::RakeTask.new('spec') do |t|
16
16
  t.pattern = FileList['spec/**/*_spec.rb']
17
17
  end
18
18
 
19
- #usage: PERKINS_CONFIG=./examples/config.rb RACK_ENV=development rake db:migrate --trace
19
+ #USAGE: bundle exec rake db:migrate PERKINS_CONFIG=./examples/boot RACK_ENV=test --trace
20
20
  namespace :db do
21
21
  task :load_config do
22
22
  ENV['RACK_ENV'] = ENV['RACK_ENV'].present? ? ENV['RACK_ENV'] : "development"
23
23
  config_file = ENV["PERKINS_CONFIG"]
24
- app = eval(File.open(config_file).read)
24
+ require config_file
25
+ #app = eval(File.open(config_file).read)
25
26
  end
26
27
  end
27
28
 
data/TODO.md CHANGED
@@ -1,4 +1,4 @@
1
1
  #TODO
2
2
 
3
- + add more redis queries
4
- + plugin infraestructure
3
+ + filter saved repos from listed github repos.
4
+ + add hook interaction.
data/Vagrantfile ADDED
@@ -0,0 +1,53 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+ VAGRANTFILE_API_VERSION = "2"
4
+ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
5
+ config.vm.box = "ubuntu/precise64"
6
+ config.omnibus.chef_version = :latest
7
+
8
+ config.vm.network :private_network, ip: "10.11.12.14"
9
+
10
+ #config.vm.network "forwarded_port", guest: 80, host: 9292
11
+
12
+ abbr_name = "#{ENV['VNAME'].gsub('dev-', '')}"
13
+ name = "#{abbr_name}-perkins"
14
+
15
+ config.vm.hostname = name
16
+
17
+ config.vm.provider "virtualbox" do |v|
18
+
19
+ host = RbConfig::CONFIG['host_os']
20
+
21
+ # Give VM 1/4 system memory & access to all cpu cores on the host
22
+ if host =~ /darwin/
23
+ cpus = `sysctl -n hw.ncpu`.to_i
24
+ # sysctl returns Bytes and we need to convert to MB
25
+ mem = `sysctl -n hw.memsize`.to_i / 1024 / 1024 / 4
26
+ elsif host =~ /linux/
27
+ cpus = `nproc`.to_i
28
+ # meminfo shows KB and we need to convert to MB
29
+ mem = `grep 'MemTotal' /proc/meminfo | sed -e 's/MemTotal://' -e 's/ kB//'`.to_i / 1024 / 4
30
+ else # sorry Windows folks, I can't help you
31
+ cpus = 2
32
+ mem = 1024
33
+ end
34
+ v.customize ["modifyvm", :id, "--ioapic", "on"]
35
+ v.customize ["modifyvm", :id, "--memory", mem]
36
+ v.customize ["modifyvm", :id, "--cpus", cpus]
37
+ v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
38
+ v.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
39
+ end
40
+
41
+ config.vm.synced_folder "./", "/vagrant", :nfs => true
42
+
43
+ config.vm.provision "chef_client" do |chef|
44
+ chef.chef_server_url = "https://chef.preyapp.com"
45
+ chef.node_name = name
46
+ chef.validation_key_path = ENV['VPATH']
47
+ chef.validation_client_name = abbr_name
48
+ chef.environment = "development"
49
+
50
+ # Run list
51
+ chef.add_role "development"
52
+ end
53
+ end
@@ -0,0 +1,11 @@
1
+ class AddStatusFieldsToRepos < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :repos , :build_status, :string
4
+ add_column :repos , :download_status, :string
5
+ end
6
+
7
+ def self.down
8
+ remove_column :repos, :build_status
9
+ end
10
+
11
+ end
data/db/schema.rb CHANGED
@@ -11,7 +11,7 @@
11
11
  #
12
12
  # It's strongly recommended that you check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(version: 20150130143050) do
14
+ ActiveRecord::Schema.define(version: 20150220143050) do
15
15
 
16
16
  create_table "build_reports", force: true do |t|
17
17
  t.string "sha"
@@ -31,6 +31,8 @@ ActiveRecord::Schema.define(version: 20150130143050) do
31
31
  t.integer "gb_id"
32
32
  t.text "github_data"
33
33
  t.boolean "cached"
34
+ t.string "build_status"
35
+ t.string "download_status"
34
36
  end
35
37
 
36
38
  add_index "repos", ["gb_id"], name: "index_repos_on_gb_id", unique: true
data/examples/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+ gem "pry"
3
+ gem "unicorn"
4
+ gem "perkins", path: "../"
@@ -0,0 +1,164 @@
1
+ PATH
2
+ remote: ../
3
+ specs:
4
+ perkins (0.0.1)
5
+ activerecord (>= 3, < 4.1)
6
+ activesupport (>= 3, < 4.1)
7
+ celluloid
8
+ celluloid-io
9
+ coffee-script
10
+ dotenv-rails
11
+ git
12
+ haml
13
+ haml_coffee_assets
14
+ rdiscount
15
+ redis
16
+ redis-namespace
17
+ sass
18
+ sidekiq
19
+ sinatra
20
+ sinatra-activerecord
21
+ sinatra-contrib
22
+ sprockets
23
+ sqlite3
24
+ thin
25
+ thor
26
+ travis-yaml
27
+ warden-github (~> 1.0)
28
+ yui-compressor
29
+
30
+ GEM
31
+ remote: https://rubygems.org/
32
+ specs:
33
+ activemodel (4.0.13)
34
+ activesupport (= 4.0.13)
35
+ builder (~> 3.1.0)
36
+ activerecord (4.0.13)
37
+ activemodel (= 4.0.13)
38
+ activerecord-deprecated_finders (~> 1.0.2)
39
+ activesupport (= 4.0.13)
40
+ arel (~> 4.0.0)
41
+ activerecord-deprecated_finders (1.0.3)
42
+ activesupport (4.0.13)
43
+ i18n (~> 0.6, >= 0.6.9)
44
+ minitest (~> 4.2)
45
+ multi_json (~> 1.3)
46
+ thread_safe (~> 0.1)
47
+ tzinfo (~> 0.3.37)
48
+ addressable (2.3.7)
49
+ arel (4.0.2)
50
+ backports (3.6.4)
51
+ builder (3.1.4)
52
+ celluloid (0.16.0)
53
+ timers (~> 4.0.0)
54
+ celluloid-io (0.16.2)
55
+ celluloid (>= 0.16.0)
56
+ nio4r (>= 1.1.0)
57
+ coderay (1.1.0)
58
+ coffee-script (2.3.0)
59
+ coffee-script-source
60
+ execjs
61
+ coffee-script-source (1.9.1)
62
+ connection_pool (2.1.1)
63
+ daemons (1.1.9)
64
+ dotenv (1.0.2)
65
+ dotenv-rails (1.0.2)
66
+ dotenv (= 1.0.2)
67
+ eventmachine (1.0.7)
68
+ execjs (2.3.0)
69
+ faraday (0.9.1)
70
+ multipart-post (>= 1.2, < 3)
71
+ git (1.2.9.1)
72
+ haml (4.0.6)
73
+ tilt
74
+ haml_coffee_assets (1.16.0)
75
+ coffee-script (~> 2.0)
76
+ sprockets (~> 2.0)
77
+ tilt (~> 1.1)
78
+ hike (1.2.3)
79
+ hitimes (1.2.2)
80
+ i18n (0.7.0)
81
+ json (1.8.2)
82
+ kgio (2.9.3)
83
+ method_source (0.8.2)
84
+ minitest (4.7.5)
85
+ multi_json (1.10.1)
86
+ multipart-post (2.0.0)
87
+ nio4r (1.1.0)
88
+ octokit (3.8.0)
89
+ sawyer (~> 0.6.0, >= 0.5.3)
90
+ pry (0.10.1)
91
+ coderay (~> 1.1.0)
92
+ method_source (~> 0.8.1)
93
+ slop (~> 3.4)
94
+ rack (1.6.0)
95
+ rack-protection (1.5.3)
96
+ rack
97
+ rack-test (0.6.3)
98
+ rack (>= 1.0)
99
+ raindrops (0.13.0)
100
+ rdiscount (2.1.8)
101
+ redis (3.2.1)
102
+ redis-namespace (1.5.1)
103
+ redis (~> 3.0, >= 3.0.4)
104
+ sass (3.4.12)
105
+ sawyer (0.6.0)
106
+ addressable (~> 2.3.5)
107
+ faraday (~> 0.8, < 0.10)
108
+ sidekiq (3.3.2)
109
+ celluloid (>= 0.16.0)
110
+ connection_pool (>= 2.1.1)
111
+ json
112
+ redis (>= 3.0.6)
113
+ redis-namespace (>= 1.3.1)
114
+ sinatra (1.4.5)
115
+ rack (~> 1.4)
116
+ rack-protection (~> 1.4)
117
+ tilt (~> 1.3, >= 1.3.4)
118
+ sinatra-activerecord (2.0.5)
119
+ activerecord (>= 3.2)
120
+ sinatra (~> 1.0)
121
+ sinatra-contrib (1.4.2)
122
+ backports (>= 2.0)
123
+ multi_json
124
+ rack-protection
125
+ rack-test
126
+ sinatra (~> 1.4.0)
127
+ tilt (~> 1.3)
128
+ slop (3.6.0)
129
+ sprockets (2.12.3)
130
+ hike (~> 1.2)
131
+ multi_json (~> 1.0)
132
+ rack (~> 1.0)
133
+ tilt (~> 1.1, != 1.3.0)
134
+ sqlite3 (1.3.10)
135
+ thin (1.6.3)
136
+ daemons (~> 1.0, >= 1.0.9)
137
+ eventmachine (~> 1.0)
138
+ rack (~> 1.0)
139
+ thor (0.19.1)
140
+ thread_safe (0.3.4)
141
+ tilt (1.4.1)
142
+ timers (4.0.1)
143
+ hitimes
144
+ travis-yaml (0.2.0)
145
+ tzinfo (0.3.43)
146
+ unicorn (4.8.3)
147
+ kgio (~> 2.6)
148
+ rack
149
+ raindrops (~> 0.7)
150
+ warden (1.2.3)
151
+ rack (>= 1.0)
152
+ warden-github (1.2.0)
153
+ activesupport (> 3.0)
154
+ octokit (> 2.1.0)
155
+ warden (> 1.0)
156
+ yui-compressor (0.12.0)
157
+
158
+ PLATFORMS
159
+ ruby
160
+
161
+ DEPENDENCIES
162
+ perkins!
163
+ pry
164
+ unicorn
data/examples/Procfile ADDED
@@ -0,0 +1,4 @@
1
+ #unicorn: unicorn -c unicorn.rb
2
+ web: rackup config.ru
3
+ #web: thin --servers 3 -R config.ru start
4
+ workers: bundle exec sidekiq -r ./boot.rb -C ./sidekiq.yml
data/examples/boot.rb ADDED
@@ -0,0 +1,15 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ Bundler.require
4
+
5
+ require "perkins"
6
+
7
+ Perkins.application do |app|
8
+ config do |c|
9
+ c.sse_endpoint = "http://dev.perkins.ci:3000"
10
+ c.redis = {host: "localhost"}
11
+ c.database = File.expand_path("../database.yml", __FILE__)
12
+ c.github_client_id = ENV['GITHUB_CLIENT_ID']
13
+ c.github_client_secret = ENV['GITHUB_SECRET']
14
+ end
15
+ end
@@ -0,0 +1,22 @@
1
+
2
+ require "./boot"
3
+
4
+ require 'sidekiq/web'
5
+
6
+ #\ -o 0.0.0.0 -w -p 3000
7
+
8
+ #worker_processes 3
9
+
10
+ options = {port: 3000, host: "0.0.0.0", e: :development}
11
+
12
+ map '/' do
13
+ run ::Perkins::Server.new(options)
14
+ end
15
+
16
+ map '/sidekiq' do
17
+ use Rack::Auth::Basic, "Protected Area" do |username, password|
18
+ username == 'sidekiq' && password == 'sidekiq'
19
+ end
20
+
21
+ run Sidekiq::Web
22
+ end
@@ -6,8 +6,8 @@ production:
6
6
 
7
7
  development:
8
8
  adapter: sqlite3
9
- database: db/development.sqlite3
10
- pool: 5
9
+ database: ../db/development.sqlite3 #point to perkins gem database
10
+ pool: 25
11
11
  timeout: 5000
12
12
 
13
13
  test:
@@ -0,0 +1,9 @@
1
+ ---
2
+ :concurrency: 5
3
+ #:pidfile: tmp/pids/sidekiq.pid
4
+ staging:
5
+ :concurrency: 10
6
+ production:
7
+ :concurrency: 20
8
+ :queues:
9
+ - default
@@ -0,0 +1,22 @@
1
+ class String
2
+ # colorization
3
+ def colorize(color_code)
4
+ "\e[#{color_code}m#{self}\e[0m"
5
+ end
6
+
7
+ def red
8
+ colorize(31)
9
+ end
10
+
11
+ def green
12
+ colorize(32)
13
+ end
14
+
15
+ def yellow
16
+ colorize(33)
17
+ end
18
+
19
+ def pink
20
+ colorize(35)
21
+ end
22
+ end
@@ -1,20 +1,27 @@
1
1
  module Perkins
2
2
  class Application
3
- attr_accessor :host , :port, :working_dir, :redis, :database
3
+ attr_accessor :host , :port, :working_dir, :redis, :database, :sse_endpoint
4
4
  attr_reader :server
5
5
  attr_accessor :github_client_id, :github_client_secret
6
6
 
7
+ class << self
8
+ attr_accessor :instance
9
+ end
10
+
7
11
  def initialize(opts={})
8
12
  host = opts[:host] unless opts[:host].blank?
9
13
  post = opts[:port] unless opts[:port].blank?
10
14
  github_client_id = opts[:github_client_id] unless opts[:github_client_id].blank?
11
15
  github_client_server = opts[:github_client_secret] unless opts[:github_client_secret].blank?
12
16
  working_dir = opts[:working_dir] unless opts[:working_dir].blank?
17
+ self.class.instance = self
18
+ self
13
19
  end
14
20
 
15
21
  def database=(file)
16
- dbconfig = YAML::load(File.open(file))
17
- @db = ActiveRecord::Base.establish_connection(dbconfig[ENV['RACK_ENV']])
22
+ @dbconfig = YAML::load(File.open(file))
23
+ @db = ActiveRecord::Base.establish_connection(@dbconfig[ENV['RACK_ENV']])
24
+ setup_sidekiq
18
25
  end
19
26
 
20
27
  def database
@@ -36,5 +43,22 @@ module Perkins
36
43
  data
37
44
  end
38
45
 
46
+ def setup_sidekiq
47
+ # Sidekiq server is multi-threaded so our Redis connection pool size defaults to concurrency (-c)
48
+ Sidekiq.configure_server do |config|
49
+ config.redis = { :namespace => 'perkins-worker' }
50
+ if defined?(ActiveRecord::Base)
51
+ #ActiveRecord::Base.establish_connection
52
+ #Perkins::Application.instance.database
53
+ ActiveRecord::Base.establish_connection(@dbconfig[ENV['RACK_ENV']])
54
+ end
55
+ end
56
+
57
+ Sidekiq.configure_client do |config|
58
+ config.redis = { :namespace => 'perkins-worker' }
59
+ end
60
+
61
+ end
62
+
39
63
  end
40
64
  end
Binary file
@@ -1,9 +1,25 @@
1
1
  // require_tree
2
2
 
3
+ //= require vendor/md5
4
+ //= require vendor/livequery.jquery
5
+ //= require vendor/hamlcoffee
3
6
  //= require vendor/ansiparse
4
7
  //= require vendor/minispade
5
8
  //= require vendor/log
6
9
  //= require log_view
7
10
  //= require vendor/jquery.timeago
11
+ //= require vendor/underscore
12
+ //= require vendor/backbone-min
13
+ //= require vendor/backbone.marionette
14
+ //= require vendor/nprogress
15
+
16
+ //= require config
17
+
18
+ //= require "perkins/router"
19
+ //= require "perkins/helpers"
20
+ //= require_tree "./templates"
21
+ //= require_tree "./perkins/m"
22
+ //= require_tree "./perkins/v"
23
+
24
+ //= require perkings
8
25
 
9
- //= require perkings
@@ -0,0 +1,14 @@
1
+ window.Perkins =
2
+ Models: {}
3
+ Collections: {}
4
+ Views: {}
5
+ Helpers: {}
6
+ Routers: {}
7
+ Layouts: {}
8
+ initialize: ->
9
+ window.Applayout = new Perkins.Views.ApplicationLayout
10
+
11
+
12
+ $(document).ready ->
13
+
14
+ Perkins.initialize()
@@ -9,7 +9,6 @@ class window.LogView
9
9
 
10
10
  render: ()->
11
11
  parts = @split(@text)
12
-
13
12
  #@log.set(ix, line)
14
13
  @receive(part[0], part[1]) for part in parts
15
14
  #console.log(@el)
@@ -22,7 +21,7 @@ class window.LogView
22
21
  string = string.replace(/\r\n/gm, "\n") # it seems split(/^/) would remove the newline, but not the \r here?
23
22
  lines = string.split(/^/m)
24
23
  parts = ([i, line] for line, i in lines)
25
- console.log(JSON.stringify(parts))
24
+ #console.log(JSON.stringify(parts))
26
25
  parts = @slice(parts) if @options.slice
27
26
  parts = @randomize(parts) if @options.randomize
28
27
  # parts = @partition(parts) if @options.partition