inventory_manager 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +21 -0
- data/app/assets/stylesheets/inventory_manager/cabinets.css.scss +7 -0
- data/app/controllers/cabinets_controller.rb +52 -0
- data/app/controllers/parking_clickers_controller.rb +53 -0
- data/app/models/cabinet.rb +16 -0
- data/app/models/item.rb +50 -0
- data/app/models/parking_clicker.rb +5 -0
- data/app/views/cabinets/_form.html.erb +30 -0
- data/app/views/cabinets/edit.html.erb +7 -0
- data/app/views/cabinets/index.html.erb +54 -0
- data/app/views/cabinets/new.html.erb +7 -0
- data/app/views/parking_clickers/_form.html.erb +30 -0
- data/app/views/parking_clickers/edit.html.erb +7 -0
- data/app/views/parking_clickers/index.html.erb +54 -0
- data/app/views/parking_clickers/new.html.erb +7 -0
- data/config/routes.rb +4 -0
- data/db/migrate/20131118223455_create_items.rb +13 -0
- data/lib/inventory_manager.rb +6 -0
- data/lib/inventory_manager/engine.rb +4 -0
- data/lib/inventory_manager/version.rb +3 -0
- data/lib/tasks/inventory_manager_tasks.rake +4 -0
- metadata +122 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MGJhMzM1OGVkZWVmODI0ODM0ZWI0OGM5NTZhMjJmYWM4YTcxM2JkNA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YmFjYTU3MjA2ZTMzYmI3ZjJkNzg0NWM1NzEzMmJmZDYxMjU5MDdlMA==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ODJjOTBhMTQ3ZWVhODNkZTI3NWRjYmU2MWIyYjMzNmMxMWMxYjM2MjRlZWFh
|
10
|
+
NDkzMmU2MzY2Mjg5MzdmMjhkZjdkZDFjZjUxM2E2MjQ1Zjk5ODY2MTAxY2Yz
|
11
|
+
YjQwNmEzNjQxOTg3OTEyMGQwOTk1Y2U4M2E5OTlmYWY1ZjkyYTQ=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZDMwNDg2OGU4MjUzMzAyZDA4ZTg3MWFlZjk2NjU0M2RjNzRiODE1NGVjM2Y2
|
14
|
+
ZTg5ODBmNjkyMWNiZGJmODIzNTAyZWIxODVhMDdmMDgzMGEzMTVjZDQxZDA5
|
15
|
+
NGM1M2MzMjk5ZWY4ZWJkNmZiZTQ4ZWQ3MTkxMGRjZTdhZmU2YzU=
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2013 YOURNAME
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'InventoryManager'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
Bundler::GemHelper.install_tasks
|
21
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
class CabinetsController < ApplicationController
|
2
|
+
respond_to :html, :json
|
3
|
+
authorize_resource
|
4
|
+
|
5
|
+
def index
|
6
|
+
@cabinets = Cabinet.order('identifier')
|
7
|
+
|
8
|
+
if params[:location]
|
9
|
+
@cabinet_location = Location.find(params[:location])
|
10
|
+
@cabinets = @cabinets.where(location_id: @cabinet_location.id) if @cabinet_location
|
11
|
+
end
|
12
|
+
|
13
|
+
if params[:identifier]
|
14
|
+
@cabinets = @cabinets.where(identifier: params[:identifier])
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def new
|
19
|
+
@cabinet = Cabinet.new
|
20
|
+
end
|
21
|
+
|
22
|
+
def create
|
23
|
+
@cabinet = Cabinet.new( cabinet_params )
|
24
|
+
if @cabinet.save
|
25
|
+
redirect_to new_cabinet_path, notice: 'Your changes were saved'
|
26
|
+
else
|
27
|
+
render :new, error: 'Sorry, your changes could not be saved'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def edit
|
32
|
+
@cabinet = Cabinet.find(params[:id])
|
33
|
+
end
|
34
|
+
|
35
|
+
def update
|
36
|
+
@cabinet = Cabinet.find(params[:id])
|
37
|
+
@cabinet.update_attributes( cabinet_params )
|
38
|
+
redirect_to cabinets_path
|
39
|
+
end
|
40
|
+
|
41
|
+
def destroy
|
42
|
+
@cabinet = Cabinet.find(params[:id])
|
43
|
+
@cabinet.destroy
|
44
|
+
redirect_to cabinets_path, notice: 'Cabinet deleted'
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def cabinet_params
|
50
|
+
params.require(:cabinet).permit!
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
class ParkingClickersController < ApplicationController
|
2
|
+
respond_to :html, :json
|
3
|
+
authorize_resource
|
4
|
+
|
5
|
+
def index
|
6
|
+
@parking_clickers = ParkingClicker.order('identifier')
|
7
|
+
|
8
|
+
if params[:location]
|
9
|
+
@parking_clicker_location = Location.find(params[:location])
|
10
|
+
@parking_clickers = @parking_clickers.where(location_id: @parking_clicker_location.id) if @parking_clicker_location
|
11
|
+
end
|
12
|
+
|
13
|
+
if params[:identifier]
|
14
|
+
@parking_clickers = @parking_clickers.where(identifier: params[:identifier])
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def new
|
19
|
+
@parking_clicker = ParkingClicker.new
|
20
|
+
end
|
21
|
+
|
22
|
+
def create
|
23
|
+
@parking_clicker = ParkingClicker.new( parking_clicker_params )
|
24
|
+
if @parking_clicker.save
|
25
|
+
redirect_to new_parking_clicker_path, notice: 'Your changes were saved'
|
26
|
+
else
|
27
|
+
render :new, error: 'Sorry, your changes could not be saved'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def edit
|
32
|
+
@parking_clicker = ParkingClicker.find(params[:id])
|
33
|
+
end
|
34
|
+
|
35
|
+
def update
|
36
|
+
@parking_clicker = ParkingClicker.find(params[:id])
|
37
|
+
@parking_clicker.update_attributes( parking_clicker_params )
|
38
|
+
redirect_to parking_clickers_path
|
39
|
+
end
|
40
|
+
|
41
|
+
def destroy
|
42
|
+
@parking_clicker = ParkingClicker.find(params[:id])
|
43
|
+
@parking_clicker.destroy
|
44
|
+
redirect_to parking_clickers_path, notice: 'ParkingClicker deleted'
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def parking_clicker_params
|
50
|
+
params.require(:parking_clicker).permit!
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class Cabinet < Item
|
2
|
+
|
3
|
+
STATES = [ :available, :in_use, :need_keys]
|
4
|
+
|
5
|
+
state_machine :state do
|
6
|
+
|
7
|
+
event :need_keys! do
|
8
|
+
transition [ :in_use, :availble ] => :need_keys
|
9
|
+
end
|
10
|
+
|
11
|
+
state :need_keys do
|
12
|
+
def assigned?; false; end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
data/app/models/item.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
class Item < ActiveRecord::Base
|
2
|
+
belongs_to :location
|
3
|
+
belongs_to :employee, foreign_key: 'assignee_id'
|
4
|
+
|
5
|
+
def employee
|
6
|
+
Employee.unscoped { super }
|
7
|
+
end
|
8
|
+
|
9
|
+
state_machine :state, initial: :available do
|
10
|
+
|
11
|
+
after_transition on: :release do |item, transiton|
|
12
|
+
item.update_attributes(assignee_id: nil)
|
13
|
+
end
|
14
|
+
|
15
|
+
event :assign do
|
16
|
+
transition [ :available ] => :in_use
|
17
|
+
end
|
18
|
+
|
19
|
+
event :release do
|
20
|
+
transition [ :in_use ] => :available
|
21
|
+
end
|
22
|
+
|
23
|
+
state :available do
|
24
|
+
def assigned?; false; end
|
25
|
+
end
|
26
|
+
|
27
|
+
state :in_use do
|
28
|
+
def assigned?; true; end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def assign_with_id!(assignee_id)
|
33
|
+
if assignee_id && self.assign!
|
34
|
+
self.assignee_id = assignee_id
|
35
|
+
self.save # two saves?
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
module EmployeeMethods
|
41
|
+
def self.included(base)
|
42
|
+
# base.send :extend, ClassMethods
|
43
|
+
end
|
44
|
+
|
45
|
+
def inventory
|
46
|
+
Item.where(assignee_id: id)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<%= simple_form_for @cabinet, class: 'form-horizontal' do |f| %>
|
2
|
+
|
3
|
+
<div class="form-group">
|
4
|
+
<%= f.input :identifier, input_html: { size: 20 } %>
|
5
|
+
</div>
|
6
|
+
|
7
|
+
<div class="form-group">
|
8
|
+
<%= f.label :location_id, 'Location' %>
|
9
|
+
<%= select('cabinet', 'location_id', Location.all.collect { |l| [ l.name, l.id ] } ) %>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<div class="form-group">
|
13
|
+
<%= f.label :state, 'Status' %>
|
14
|
+
<%= select('cabinet', 'state', Cabinet::STATES, selected: 'in_use') %>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="form-group">
|
18
|
+
<%= f.label :assignee_id, 'Assigned to' %>
|
19
|
+
<%= select('cabinet', 'assignee_id', Employee.where(location_id: 6).order('name').collect { |l| [ l.name, l.id ] }, include_blank: true ) %>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<%= f.submit 'Submit', class: 'btn btn-default' %>
|
23
|
+
<%- end %>
|
24
|
+
<%- unless @cabinet.new_record? %>
|
25
|
+
<p></p>
|
26
|
+
<p>
|
27
|
+
<%= link_to 'Delete Cabinet', cabinet_path(@cabinet), method: :delete, confirm: 'Are you sure?', class: 'btn btn-large btn-danger' %>
|
28
|
+
</p>
|
29
|
+
<% end %>
|
30
|
+
<p></p>
|
@@ -0,0 +1,54 @@
|
|
1
|
+
<ul id="location-links">
|
2
|
+
<%- Location.all.each do |location| %>
|
3
|
+
<li>
|
4
|
+
<%= link_to location.name, cabinets_path(location: location.id, identifier: params[:identifier]), class: "btn #{ @cabinet_location.try(:id) == location.id ? 'btn-primary' : 'btn-default' } btn-xs" %>
|
5
|
+
</li>
|
6
|
+
<%- end %>
|
7
|
+
<li>
|
8
|
+
<%= link_to 'All', cabinets_path(identifier: params[:identifier]), class: "btn #{ params[:location].present? ? 'btn-default' : 'btn-primary' } btn-xs" %>
|
9
|
+
</li>
|
10
|
+
</ul>
|
11
|
+
|
12
|
+
<h1>Cabinets <%= "for #{@cabinet_location.name}" if @cabinet_location %></h1>
|
13
|
+
<%- if params[:identifier] %>
|
14
|
+
<h2 class="alert alert-info">Searching for <em>“<%= params[:identifier] %>”</em> <%= "in #{@cabinet_location.name}" if @cabinet_location %></h2>
|
15
|
+
<%- end %>
|
16
|
+
|
17
|
+
<h2 style="text-align:right;">
|
18
|
+
<%= link_to 'Add a Cabinet', new_cabinet_path, class: 'btn btn-primary' %>
|
19
|
+
<%= form_tag(cabinets_path, method: :get, class: 'form-inline', role: 'form') %>
|
20
|
+
<div class="form-group">
|
21
|
+
<%= search_field_tag :identifier, params[:identifier], placeholder: 'Cabinet ID', style: 'font-size:70%;' %>
|
22
|
+
<%= submit_tag 'Search', class: 'btn btn-primary' %>
|
23
|
+
<%- if params[:identifier] %>
|
24
|
+
<p class="small" style="font-size:12px;margin-top:5px;"><%= link_to 'Clear search', cabinets_path(location: @cabinet_location.try(:id)) %></p>
|
25
|
+
<%- end %>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
</h2>
|
29
|
+
|
30
|
+
<table class="table table-striped cabinets">
|
31
|
+
<thead>
|
32
|
+
<tr>
|
33
|
+
<th>Identifier</th>
|
34
|
+
<th>Status</th>
|
35
|
+
<th>Location</th>
|
36
|
+
<th>Assigned to</th>
|
37
|
+
<th></th>
|
38
|
+
</tr>
|
39
|
+
</thead>
|
40
|
+
|
41
|
+
<tbody>
|
42
|
+
<%- @cabinets.each do |cabinet| %>
|
43
|
+
<tr>
|
44
|
+
<td><%= link_to cabinet.identifier, cabinets_path(identifier: cabinet.identifier, location: @cabinet_location.try(:id)) %></td>
|
45
|
+
<td><%= cabinet.state %></td>
|
46
|
+
<td><%= cabinet.location.try(:name) %></td>
|
47
|
+
<td><%= cabinet.employee.try(:name) %></td>
|
48
|
+
<td>
|
49
|
+
<%= link_to content_tag(:span, '', class: 'glyphicon glyphicon-edit'), edit_cabinet_path(cabinet) %>
|
50
|
+
</td>
|
51
|
+
</tr>
|
52
|
+
<%- end %>
|
53
|
+
</tbody>
|
54
|
+
</ul>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<%= simple_form_for @parking_clicker, class: 'form-horizontal' do |f| %>
|
2
|
+
|
3
|
+
<div class="form-group">
|
4
|
+
<%= f.input :identifier, input_html: { size: 20 } %>
|
5
|
+
</div>
|
6
|
+
|
7
|
+
<div class="form-group">
|
8
|
+
<%= f.label :location_id, 'Location' %>
|
9
|
+
<%= select('parking_clicker', 'location_id', Location.all.collect { |l| [ l.name, l.id ] } ) %>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<div class="form-group">
|
13
|
+
<%= f.label :state, 'Status' %>
|
14
|
+
<%= select('parking_clicker', 'state', ParkingClicker::STATES, selected: 'in_use') %>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="form-group">
|
18
|
+
<%= f.label :assignee_id, 'Assigned to' %>
|
19
|
+
<%= select('parking_clicker', 'assignee_id', Employee.where(location_id: 6).order('name').collect { |l| [ l.name, l.id ] }, include_blank: true ) %>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<%= f.submit 'Submit', class: 'btn btn-default' %>
|
23
|
+
<%- end %>
|
24
|
+
<%- unless @parking_clicker.new_record? %>
|
25
|
+
<p></p>
|
26
|
+
<p>
|
27
|
+
<%= link_to 'Delete Parking Clicker', parking_clicker_path(@parking_clicker), method: :delete, confirm: 'Are you sure?', class: 'btn btn-large btn-danger' %>
|
28
|
+
</p>
|
29
|
+
<% end %>
|
30
|
+
<p></p>
|
@@ -0,0 +1,54 @@
|
|
1
|
+
<ul id="location-links">
|
2
|
+
<%- Location.all.each do |location| %>
|
3
|
+
<li>
|
4
|
+
<%= link_to location.name, parking_clickers_path(location: location.id, identifier: params[:identifier]), class: "btn #{ @parking_clicker_location.try(:id) == location.id ? 'btn-primary' : 'btn-default' } btn-xs" %>
|
5
|
+
</li>
|
6
|
+
<%- end %>
|
7
|
+
<li>
|
8
|
+
<%= link_to 'All', parking_clickers_path(identifier: params[:identifier]), class: "btn #{ params[:location].present? ? 'btn-default' : 'btn-primary' } btn-xs" %>
|
9
|
+
</li>
|
10
|
+
</ul>
|
11
|
+
|
12
|
+
<h1>Parking Clickers <%= "for #{@parking_clicker_location.name}" if @parking_clicker_location %></h1>
|
13
|
+
<%- if params[:identifier] %>
|
14
|
+
<h2 class="alert alert-info">Searching for <em>“<%= params[:identifier] %>”</em> <%= "in #{@parking_clicker_location.name}" if @parking_clicker_location %></h2>
|
15
|
+
<%- end %>
|
16
|
+
|
17
|
+
<h2 style="text-align:right;">
|
18
|
+
<%= link_to 'Add a Parking Clicker', new_parking_clicker_path, class: 'btn btn-primary' %>
|
19
|
+
<%= form_tag(parking_clickers_path, method: :get, class: 'form-inline', role: 'form') %>
|
20
|
+
<div class="form-group">
|
21
|
+
<%= search_field_tag :identifier, params[:identifier], placeholder: 'Parking Clicker ID', style: 'font-size:70%;' %>
|
22
|
+
<%= submit_tag 'Search', class: 'btn btn-primary' %>
|
23
|
+
<%- if params[:identifier] %>
|
24
|
+
<p class="small" style="font-size:12px;margin-top:5px;"><%= link_to 'Clear search', parking_clickers_path(location: @parking_clicker_location.try(:id)) %></p>
|
25
|
+
<%- end %>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
</h2>
|
29
|
+
|
30
|
+
<table class="table table-striped parking_clickers">
|
31
|
+
<thead>
|
32
|
+
<tr>
|
33
|
+
<th>Identifier</th>
|
34
|
+
<th>Status</th>
|
35
|
+
<th>Location</th>
|
36
|
+
<th>Assigned to</th>
|
37
|
+
<th></th>
|
38
|
+
</tr>
|
39
|
+
</thead>
|
40
|
+
|
41
|
+
<tbody>
|
42
|
+
<%- @parking_clickers.each do |parking_clicker| %>
|
43
|
+
<tr>
|
44
|
+
<td><%= link_to parking_clicker.identifier, parking_clickers_path(identifier: parking_clicker.identifier, location: @parking_clicker_location.try(:id)) %></td>
|
45
|
+
<td><%= parking_clicker.state %></td>
|
46
|
+
<td><%= parking_clicker.location.try(:name) %></td>
|
47
|
+
<td><%= parking_clicker.employee.try(:name) %></td>
|
48
|
+
<td>
|
49
|
+
<%= link_to content_tag(:span, '', class: 'glyphicon glyphicon-edit'), edit_parking_clicker_path(parking_clicker) %>
|
50
|
+
</td>
|
51
|
+
</tr>
|
52
|
+
<%- end %>
|
53
|
+
</tbody>
|
54
|
+
</ul>
|
data/config/routes.rb
ADDED
metadata
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: inventory_manager
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.8
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- David A McClain
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-02-02 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.0.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.0.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: simple_form
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: state_machine
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pg
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: ! ' Description of InventoryManager.'
|
70
|
+
email:
|
71
|
+
- d.mcclain@modcloth.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- MIT-LICENSE
|
77
|
+
- README.rdoc
|
78
|
+
- Rakefile
|
79
|
+
- app/assets/stylesheets/inventory_manager/cabinets.css.scss
|
80
|
+
- app/controllers/cabinets_controller.rb
|
81
|
+
- app/controllers/parking_clickers_controller.rb
|
82
|
+
- app/models/cabinet.rb
|
83
|
+
- app/models/item.rb
|
84
|
+
- app/models/parking_clicker.rb
|
85
|
+
- app/views/cabinets/_form.html.erb
|
86
|
+
- app/views/cabinets/edit.html.erb
|
87
|
+
- app/views/cabinets/index.html.erb
|
88
|
+
- app/views/cabinets/new.html.erb
|
89
|
+
- app/views/parking_clickers/_form.html.erb
|
90
|
+
- app/views/parking_clickers/edit.html.erb
|
91
|
+
- app/views/parking_clickers/index.html.erb
|
92
|
+
- app/views/parking_clickers/new.html.erb
|
93
|
+
- config/routes.rb
|
94
|
+
- db/migrate/20131118223455_create_items.rb
|
95
|
+
- lib/inventory_manager.rb
|
96
|
+
- lib/inventory_manager/engine.rb
|
97
|
+
- lib/inventory_manager/version.rb
|
98
|
+
- lib/tasks/inventory_manager_tasks.rake
|
99
|
+
homepage: http://github.com/uhhuhyeah/inventory_manager
|
100
|
+
licenses: []
|
101
|
+
metadata: {}
|
102
|
+
post_install_message:
|
103
|
+
rdoc_options: []
|
104
|
+
require_paths:
|
105
|
+
- lib
|
106
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - ! '>='
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
116
|
+
requirements: []
|
117
|
+
rubyforge_project:
|
118
|
+
rubygems_version: 2.2.2
|
119
|
+
signing_key:
|
120
|
+
specification_version: 4
|
121
|
+
summary: Summary of InventoryManager.
|
122
|
+
test_files: []
|