jobshop 0.0.9 → 0.0.10
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.
- checksums.yaml +4 -4
- data/README.md +4 -2
- data/Rakefile +4 -12
- data/app/controllers/jobshop/teams/registrations_controller.rb +2 -2
- data/app/models/jobshop/registration.rb +1 -1
- data/app/models/jobshop/team.rb +1 -1
- data/app/models/jobshop/user.rb +1 -1
- data/lib/generators/jobshop/orm_helpers.rb +1 -1
- data/lib/generators/jobshop/team/team_generator.rb +2 -2
- data/lib/jobshop/dummy_app.rb +58 -0
- data/lib/jobshop/engine.rb +1 -1
- data/lib/jobshop/templates/dummy_template.rb +2 -1
- data/lib/jobshop/templates/quick_install.rb +7 -4
- data/lib/jobshop/templates/secrets.yml.tt +2 -18
- data/lib/jobshop/version.rb +1 -1
- data/lib/jobshop.rb +0 -22
- data/lib/tasks/jobshop_tasks.rake +9 -0
- metadata +17 -3
- data/lib/jobshop/dummy.rb +0 -43
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 682c0ee84f3983c9b0008608ceaf935e8274954f
|
|
4
|
+
data.tar.gz: 8ccd26b27cde56d81cdca13d48731bb6f272cf88
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 50bc98ac77ef2d50da1dc9b0cf371f4816f373fe7c3527d58c6c32a86b332ffe92f6cd780231d2c7bd143272b88a5bbda2c7ef763ca01c492d11164b86dbe267
|
|
7
|
+
data.tar.gz: a65c6f4e5e1d72c5abb4e995b4c2890aa813d2c8124ccc89d44df9086f0fcd69fed2d5c82a4390c62fd88b0bbad24caf43e45ca2c3f09dd1f6070a01e1a7c565
|
data/README.md
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
_This README is also [available in a friendly, navigable format](http://documentup.com/jobshop/jobshop/)._
|
|
3
3
|
|
|
4
4
|
[](https://badge.fury.io/rb/jobshop)
|
|
5
|
-
[](https://codeclimate.com/github/jobshop/jobshop)
|
|
6
|
+
[](https://semaphoreci.com/frankjmattia/jobshop)
|
|
7
|
+
[](https://coveralls.io/github/jobshop/jobshop?branch=master)
|
|
6
8
|
|
|
7
9
|
Real-time production tracking and process evaluation in the cloud - or under your own roof.
|
|
8
10
|
|
|
@@ -27,7 +29,7 @@ requests are always welcome.
|
|
|
27
29
|
|
|
28
30
|
First, generate a new rails app and target the PostgreSQL adapter. The provided
|
|
29
31
|
application template does all the heavy lifting. It adds Jobshop to your
|
|
30
|
-
`Gemfile`, defines reasonable defaults in `config/secrets.yml` and a
|
|
32
|
+
`Gemfile`, defines reasonable defaults in `config/secrets.yml` and adds a route
|
|
31
33
|
for the `Jobshop::Engine` to `config/routes.rb`.
|
|
32
34
|
|
|
33
35
|
```console
|
data/Rakefile
CHANGED
|
@@ -17,25 +17,17 @@ RDoc::Task.new(:rdoc) do |rdoc|
|
|
|
17
17
|
rdoc.rdoc_files.include("lib/**/*.rb")
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
require "jobshop/dummy_app"
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
load "rails/tasks/engine.rake"
|
|
24
|
-
else
|
|
25
|
-
puts <<WARNING
|
|
26
|
-
The Jobshop dummy app has not yet been generated at spec/dummy-(rails_version).
|
|
27
|
-
Please run `rake jobshop:dummy` to generate it for development.
|
|
28
|
-
|
|
29
|
-
WARNING
|
|
30
|
-
end
|
|
22
|
+
APP_RAKEFILE = Jobshop::DummyApp.rakefile
|
|
31
23
|
|
|
24
|
+
load "rails/tasks/engine.rake" if File.exist?(APP_RAKEFILE)
|
|
32
25
|
load "rails/tasks/statistics.rake"
|
|
33
26
|
|
|
34
27
|
namespace :jobshop do
|
|
35
28
|
desc "Create dummy app"
|
|
36
29
|
task :dummy do
|
|
37
|
-
|
|
38
|
-
Jobshop::Dummy.generate
|
|
30
|
+
Jobshop::DummyApp.new
|
|
39
31
|
end
|
|
40
32
|
end
|
|
41
33
|
|
|
@@ -5,11 +5,11 @@ module Jobshop
|
|
|
5
5
|
include RegistrationTokenValidation
|
|
6
6
|
|
|
7
7
|
def new
|
|
8
|
-
@registration = Jobshop::Registration.new(params)
|
|
8
|
+
@registration = ::Jobshop::Registration.new(params)
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def create
|
|
12
|
-
@registration = Jobshop::Registration.new(params)
|
|
12
|
+
@registration = ::Jobshop::Registration.new(params)
|
|
13
13
|
|
|
14
14
|
if @registration.save
|
|
15
15
|
sign_in_and_redirect(@registration.user)
|
|
@@ -2,7 +2,7 @@ module Jobshop
|
|
|
2
2
|
class Registration < VirtualRecord
|
|
3
3
|
memo_attr(:user) { team.users.build(user_params) }
|
|
4
4
|
memo_attr(:team) {
|
|
5
|
-
record = Jobshop::Team.find(params[:team_id])
|
|
5
|
+
record = ::Jobshop::Team.find(params[:team_id])
|
|
6
6
|
record.assign_attributes(team_params)
|
|
7
7
|
record
|
|
8
8
|
}
|
data/app/models/jobshop/team.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Jobshop
|
|
2
2
|
class Team < ApplicationRecord
|
|
3
|
-
belongs_to :owner, class_name: "Jobshop::User"
|
|
3
|
+
belongs_to :owner, class_name: "Jobshop::User", optional: true
|
|
4
4
|
has_many :users, class_name: "Jobshop::User"
|
|
5
5
|
has_one :default_dashboard, class_name: "Jobshop::Dashboard"
|
|
6
6
|
|
data/app/models/jobshop/user.rb
CHANGED
|
@@ -4,7 +4,7 @@ module Jobshop
|
|
|
4
4
|
# :confirmable, :lockable, :timeoutable and :omniauthable
|
|
5
5
|
devise :database_authenticatable, :recoverable, :rememberable, :validatable
|
|
6
6
|
|
|
7
|
-
belongs_to :team
|
|
7
|
+
belongs_to :team, optional: true
|
|
8
8
|
has_one :default_dashboard, class_name: "Jobshop::Dashboard", through: :team
|
|
9
9
|
|
|
10
10
|
validates_uniqueness_of :email
|
|
@@ -18,7 +18,7 @@ module Jobshop
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def create_team
|
|
21
|
-
@team = Jobshop::Team.create!(name: name)
|
|
21
|
+
@team = ::Jobshop::Team.create!(name: name)
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
def generate_token
|
|
@@ -31,7 +31,7 @@ module Jobshop
|
|
|
31
31
|
# TODO: Give environments besides development a decent host and
|
|
32
32
|
# protocol. HTTPS isn't mandatory in production but it is very, VERY
|
|
33
33
|
# highly recommended.
|
|
34
|
-
@link_text = Jobshop::Engine.routes.url_helpers.
|
|
34
|
+
@link_text = ::Jobshop::Engine.routes.url_helpers.
|
|
35
35
|
new_team_registration_url(@team,
|
|
36
36
|
protocol: link_protocol,
|
|
37
37
|
host: link_host,
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
require "rails/generators/rails/app/app_generator"
|
|
2
|
+
|
|
3
|
+
module Jobshop
|
|
4
|
+
class DummyApp
|
|
5
|
+
class << self
|
|
6
|
+
def require_environment!
|
|
7
|
+
if exist?
|
|
8
|
+
require File.join(path, "config/environment")
|
|
9
|
+
else
|
|
10
|
+
abort("Dummy app does not exist. Please run `rake jobshop:dummy` to create it.")
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def exist?
|
|
15
|
+
Dir.exist?(path)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def destroy!
|
|
19
|
+
FileUtils.rmtree(path)
|
|
20
|
+
Object.send(:remove_const, constant_name)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def path
|
|
24
|
+
@path ||= File.expand_path("spec/dummy-#{Rails::VERSION::STRING}")
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def constant_name
|
|
28
|
+
@constant_name = File.basename(path)
|
|
29
|
+
.gsub(/\W/, '_').squeeze('_').camelize
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def rakefile
|
|
33
|
+
File.join(path, "Rakefile")
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def template
|
|
37
|
+
@template ||=
|
|
38
|
+
File.expand_path("templates/dummy_template.rb", __dir__)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def initialize
|
|
43
|
+
options = {
|
|
44
|
+
api: false,
|
|
45
|
+
database: "postgresql",
|
|
46
|
+
skip_gemfile: true,
|
|
47
|
+
skip_git: true,
|
|
48
|
+
skip_bundle: true,
|
|
49
|
+
skip_listen: true,
|
|
50
|
+
skip_test: true,
|
|
51
|
+
template: DummyApp.template
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
DummyApp.destroy! if DummyApp.exist?
|
|
55
|
+
Rails::Generators::AppGenerator.new([ DummyApp.path ], options).invoke_all
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
data/lib/jobshop/engine.rb
CHANGED
|
@@ -17,7 +17,7 @@ module Jobshop
|
|
|
17
17
|
g.javascripts false
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
initializer "
|
|
20
|
+
initializer "jobshop.append_migrations_paths", before: :load_config_initializers do
|
|
21
21
|
config.paths["db/migrate"].expanded.each do |expanded_path|
|
|
22
22
|
Rails.application.config.paths["db/migrate"] << expanded_path
|
|
23
23
|
end
|
|
@@ -13,7 +13,7 @@ remove_file "config/secrets.yml"
|
|
|
13
13
|
copy_file "secrets.yml.tt", "config/secrets.yml"
|
|
14
14
|
|
|
15
15
|
# The db/migrate folder never gets created for the dummy_app so do it manually.
|
|
16
|
-
unless Dir.
|
|
16
|
+
unless Dir.exist?("db/migrate")
|
|
17
17
|
say_status :create, "db/migrate"
|
|
18
18
|
Dir.mkdir("db/migrate")
|
|
19
19
|
end
|
|
@@ -21,3 +21,4 @@ end
|
|
|
21
21
|
route "mount Jobshop::Engine => \"/\""
|
|
22
22
|
|
|
23
23
|
rake "db:create"
|
|
24
|
+
rake "db:migrate"
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
[ "https://raw.githubusercontent.com/jobshop/jobshop/master/lib/jobshop/templates/" ]
|
|
3
|
-
end
|
|
1
|
+
SECRETS_YML_TT_URI = URI.parse("https://raw.githubusercontent.com/jobshop/jobshop/master/lib/jobshop/templates/secrets.yml.tt")
|
|
4
2
|
|
|
5
3
|
# Add jobshop to the application `Gemfile`.
|
|
6
4
|
gem "jobshop", "~> 0.0.9"
|
|
@@ -8,7 +6,12 @@ gem "jobshop", "~> 0.0.9"
|
|
|
8
6
|
# The generated config/secrets.yml file uses hardcoded values for
|
|
9
7
|
# test/development environments. Generate secrets pragmatically.
|
|
10
8
|
remove_file "config/secrets.yml"
|
|
11
|
-
|
|
9
|
+
create_file "config/secrets.yml" do
|
|
10
|
+
Net::HTTP.start(SECRETS_YML_TT_URI.host,
|
|
11
|
+
SECRETS_YML_TT_URI.port, use_ssl: true) do |http|
|
|
12
|
+
http.request(Net::HTTP::Get.new(SECRETS_YML_TT_URI))
|
|
13
|
+
end.body
|
|
14
|
+
end
|
|
12
15
|
|
|
13
16
|
after_bundle do
|
|
14
17
|
route %Q(mount Jobshop::Engine => "/")
|
|
@@ -11,26 +11,10 @@
|
|
|
11
11
|
# if you're sharing your code publicly.
|
|
12
12
|
|
|
13
13
|
development:
|
|
14
|
-
secret_key_base: <%=
|
|
15
|
-
path_to_key = File.expand_path("tmp/development_secret_key_base")
|
|
16
|
-
if File.exists?(path_to_key)
|
|
17
|
-
File.read(path_to_key).chomp
|
|
18
|
-
else
|
|
19
|
-
new_key = SecureRandom.hex(64)
|
|
20
|
-
File.write(path_to_key, new_key)
|
|
21
|
-
new_key
|
|
22
|
-
end %>
|
|
14
|
+
secret_key_base: <%= SecureRandom.hex(64) %>
|
|
23
15
|
|
|
24
16
|
test:
|
|
25
|
-
secret_key_base: <%=
|
|
26
|
-
path_to_key = File.expand_path("tmp/test_secret_key_base")
|
|
27
|
-
if File.exists?(path_to_key)
|
|
28
|
-
File.read(path_to_key).chomp
|
|
29
|
-
else
|
|
30
|
-
new_key = SecureRandom.hex(64)
|
|
31
|
-
File.write(path_to_key, new_key)
|
|
32
|
-
new_key
|
|
33
|
-
end %>
|
|
17
|
+
secret_key_base: <%= SecureRandom.hex(64) %>
|
|
34
18
|
|
|
35
19
|
# Do not keep production secrets in the repository,
|
|
36
20
|
# instead read values from the environment.
|
data/lib/jobshop/version.rb
CHANGED
data/lib/jobshop.rb
CHANGED
|
@@ -1,26 +1,4 @@
|
|
|
1
1
|
require "jobshop/engine"
|
|
2
2
|
|
|
3
3
|
module Jobshop
|
|
4
|
-
class << self
|
|
5
|
-
attr_writer :configuration
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def self.configuration
|
|
9
|
-
@configuration ||= Configuration.new
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
# Yields the global configuration to a block.
|
|
13
|
-
# @yield [Configuration] global configuration
|
|
14
|
-
#
|
|
15
|
-
# @example
|
|
16
|
-
# Jobshop.configure do |config|
|
|
17
|
-
# end
|
|
18
|
-
def self.configure
|
|
19
|
-
yield configuration if block_given?
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
class Configuration
|
|
23
|
-
def initialize
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
4
|
end
|
|
@@ -13,6 +13,15 @@ namespace :jobshop do
|
|
|
13
13
|
}
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
|
+
|
|
17
|
+
desc "Outputs team[:name] and team[:id] for all sites within Jobshop."
|
|
18
|
+
task teams: :environment do
|
|
19
|
+
Jobshop::Team.joins(:owner)
|
|
20
|
+
.select([ "jobshop_teams.id", "name", "jobshop_users.email AS owner_email" ]).each do |team|
|
|
21
|
+
team_name = team.name.ljust(32)
|
|
22
|
+
puts "#{team_name} | #{team.id} | #{team.owner_email} "
|
|
23
|
+
end
|
|
24
|
+
end
|
|
16
25
|
end
|
|
17
26
|
|
|
18
27
|
%w( db:migrate db:rollback db:migrate:up db:migrate:down ).each do |t|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jobshop
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.10
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Frank J. Mattia
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-07-
|
|
11
|
+
date: 2016-07-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: coffee-rails
|
|
@@ -176,6 +176,20 @@ dependencies:
|
|
|
176
176
|
- - "~>"
|
|
177
177
|
- !ruby/object:Gem::Version
|
|
178
178
|
version: '2.6'
|
|
179
|
+
- !ruby/object:Gem::Dependency
|
|
180
|
+
name: coveralls
|
|
181
|
+
requirement: !ruby/object:Gem::Requirement
|
|
182
|
+
requirements:
|
|
183
|
+
- - ">="
|
|
184
|
+
- !ruby/object:Gem::Version
|
|
185
|
+
version: '0'
|
|
186
|
+
type: :development
|
|
187
|
+
prerelease: false
|
|
188
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
189
|
+
requirements:
|
|
190
|
+
- - ">="
|
|
191
|
+
- !ruby/object:Gem::Version
|
|
192
|
+
version: '0'
|
|
179
193
|
- !ruby/object:Gem::Dependency
|
|
180
194
|
name: factory_girl_rails
|
|
181
195
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -345,7 +359,7 @@ files:
|
|
|
345
359
|
- lib/generators/jobshop/team/USAGE
|
|
346
360
|
- lib/generators/jobshop/team/team_generator.rb
|
|
347
361
|
- lib/jobshop.rb
|
|
348
|
-
- lib/jobshop/
|
|
362
|
+
- lib/jobshop/dummy_app.rb
|
|
349
363
|
- lib/jobshop/engine.rb
|
|
350
364
|
- lib/jobshop/support/memo_attr.rb
|
|
351
365
|
- lib/jobshop/templates/boot.rb.tt
|
data/lib/jobshop/dummy.rb
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
require "rails/generators/rails/app/app_generator"
|
|
2
|
-
|
|
3
|
-
module Jobshop
|
|
4
|
-
class Dummy
|
|
5
|
-
class << self
|
|
6
|
-
def generate
|
|
7
|
-
new
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def initialize
|
|
12
|
-
options = {
|
|
13
|
-
api: false,
|
|
14
|
-
database: "postgresql",
|
|
15
|
-
skip_gemfile: true,
|
|
16
|
-
skip_git: true,
|
|
17
|
-
skip_bundle: true,
|
|
18
|
-
skip_listen: true,
|
|
19
|
-
skip_test: true,
|
|
20
|
-
template: template_path
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
if Dir.exists?(dummy_path)
|
|
24
|
-
FileUtils.rmtree(dummy_path)
|
|
25
|
-
dummy_constant = File.basename(dummy_path).gsub(/\W/, '_').squeeze('_').camelize
|
|
26
|
-
Object.send(:remove_const, dummy_constant)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
Rails::Generators::AppGenerator.new([ dummy_path ], options).invoke_all
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
private
|
|
33
|
-
|
|
34
|
-
def dummy_path
|
|
35
|
-
@dummy_path ||= File.expand_path("spec/dummy-#{Rails::VERSION::STRING}")
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def template_path
|
|
39
|
-
@template_path ||=
|
|
40
|
-
File.expand_path("../templates/dummy_template.rb", __FILE__)
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|