Merged branch Schema-Redirect-By-Company into master

This commit is contained in:
Okechi Onyeje 2017-02-16 12:38:43 -05:00
commit 1156f37b26
40 changed files with 616 additions and 58 deletions

View File

@ -40,6 +40,7 @@ gem 'devise'
gem 'kaminari' gem 'kaminari'
#for popovers and tooltips #for popovers and tooltips
gem 'bootstrap-popover-rails' gem 'bootstrap-popover-rails'
gem 'apartment'
group :development, :test do group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console # Call 'byebug' anywhere in the code to stop execution and get a debugger console

View File

@ -38,6 +38,9 @@ GEM
i18n (~> 0.7) i18n (~> 0.7)
minitest (~> 5.1) minitest (~> 5.1)
tzinfo (~> 1.1) tzinfo (~> 1.1)
apartment (1.2.0)
activerecord (>= 3.1.2, < 6.0)
rack (>= 1.3.6)
arel (7.1.4) arel (7.1.4)
awesome_print (1.7.0) awesome_print (1.7.0)
awesome_rails_console (0.4.0) awesome_rails_console (0.4.0)
@ -205,6 +208,7 @@ PLATFORMS
ruby ruby
DEPENDENCIES DEPENDENCIES
apartment
awesome_rails_console awesome_rails_console
bcrypt (~> 3.1.7) bcrypt (~> 3.1.7)
bootstrap-popover-rails bootstrap-popover-rails

View File

@ -1,7 +1,9 @@
class RegistrationsController < Devise::RegistrationsController class RegistrationsController < Devise::RegistrationsController
include ApplicationHelper include ApplicationHelper
#protected #protected
def new
Apartment::Tenant.switch!
end
def create def create
@ -23,6 +25,9 @@ class RegistrationsController < Devise::RegistrationsController
end end
@user.save @user.save
sign_in @user sign_in @user
if !@user.admin
Apartment::Tenant.switch(Company.find(@user.company_id).company_name.gsub(/'/,'').gsub(/\s/,''))
end
redirect_to "/" redirect_to "/"
end end

View File

@ -0,0 +1,17 @@
class SessionsController < Devise::RegistrationsController
include ApplicationHelper
#def new
# Apartment::Tenant.switch!
#end
def create
binding.pry
resource = warden.authenticate!(:scope => :user)
binding.pry
sign_in(:user, resource)
if !current_user.admin
Apartment::Tenant.switch!(Company.find(current_user.company_id).company_name.gsub(/'/,'').gsub(/\s/,''))
end
redirect_to "/"
end
end

View File

@ -1,4 +1,16 @@
class Company < ApplicationRecord class Company < ApplicationRecord
has_many :users has_many :users
has_many :runs has_many :runs
after_create :create_tenant
private
def create_tenant
binding.pry
if company_name != "IVA"
Apartment::Tenant.create(company_name.gsub(/'/,'').gsub(/\s/,''))
Apartment::Tenant.switch!
end
end
end end

View File

@ -0,0 +1,3 @@
class Grade < ApplicationRecord
self.primary_key = 'Short_name'
end

View File

@ -0,0 +1,2 @@
class Machine < ApplicationRecord
end

View File

@ -1,12 +1,12 @@
class Oyster < ApplicationRecord class Oyster < ApplicationRecord
belongs_to :run belongs_to :run
#Oyster.establish_connection(:"stats_#{Rails.env}") #Oyster.establish_connection(:"stats_#{Rails.env}")
Oyster.establish_connection( #Oyster.establish_connection(
:adapter => "mysql2", #:adapter => "mysql2",
:host => ENV['STATS_DB_URL'], #:host => ENV['STATS_DB_URL'],
:username => ENV['STATS_DB_USER'], #:username => ENV['STATS_DB_USER'],
:password => ENV['STATS_DB_PASS'], #:password => ENV['STATS_DB_PASS'],
:database => "main" #:database => "main"
) #)
scope :run_id, -> (id) { where run_id: id.to_i } scope :run_id, -> (id) { where run_id: id.to_i }
end end

View File

@ -1,10 +1,10 @@
class Result < ApplicationRecord class Result < ApplicationRecord
#establish_connection(:"stats_#{Rails.env}") #establish_connection(:"stats_#{Rails.env}")
Result.establish_connection( #Result.establish_connection(
:adapter => "mysql2", #:adapter => "mysql2",
:host => ENV['STATS_DB_URL'], #:host => ENV['STATS_DB_URL'],
:username => ENV['STATS_DB_USER'], #:username => ENV['STATS_DB_USER'],
:password => ENV['STATS_DB_PASS'], #:password => ENV['STATS_DB_PASS'],
:database => "main" #:database => "main"
) #)
end end

View File

@ -1,12 +1,12 @@
class Run < ApplicationRecord class Run < ApplicationRecord
has_many :oysters has_many :oysters
belongs_to :companies #belongs_to :companies
# establish_connection(:"stats_#{Rails.env}") # establish_connection(:"stats_#{Rails.env}")
Run.establish_connection( #Run.establish_connection(
:adapter => "mysql2", #:adapter => "mysql2",
:host => ENV['STATS_DB_URL'], #:host => ENV['STATS_DB_URL'],
:username => ENV['STATS_DB_USER'], #:username => ENV['STATS_DB_USER'],
:password => ENV['STATS_DB_PASS'], #:password => ENV['STATS_DB_PASS'],
:database => "main" #:database => "main"
) #)
end end

View File

@ -5,4 +5,12 @@ class User < ApplicationRecord
# :confirmable, :lockable, :timeoutable and :omniauthable # :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable, devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable :recoverable, :rememberable, :trackable, :validatable
def after_database_authentication
binding.pry
if !self.admin
binding.pry
Apartment::Tenant.switch!(Company.find(self.company_id).company_name.gsub(/'/,'').gsub(/\s/,''))
end
end
end end

View File

@ -0,0 +1,20 @@
<div class=" login_form">
<h2 class="form-title">Login</h2>
<%= form_for(:user, :url => session_path(:user)) do |f| %>
<div class="form-group">
<%= f.text_field :email, class: 'form-control', placeholder: 'email' %>
</div>
<div class="form-group">
<%= f.password_field :password, class: 'form-control', placeholder: 'password' %>
</div>
<div class="form-group">
<%= f.check_box :remember_me %>
<%= f.label :remember_me %>
</div>
<div class="actions">
<%= f.submit 'Sign in', class: 'btn btn-lg aqua-btn2 user-signin-btn' %>
</div>
<% end %>
</div>

View File

@ -1,4 +1,8 @@
<h2>Sign up!</h2> <head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<!--<h2>Sign up!</h2>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> <%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %> <%= devise_error_messages! %>
@ -30,4 +34,58 @@
</div> </div>
<% end %> <% end %>
<%= render "users/shared/links" %> <%= render "shared/links" %>-->
<div class="container">
<div class="row new_user_row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-primary">
<ul class="nav nav-tabs">
<li role="presentation" class="active"><a href="#register" aria-controls="register" role="tab" data-toggle="pill">Register</a></li>
<li><a data-toggle="pill" href="#login">Login</a></li>
</ul>
<div class="tab-content">
<!-- register tab -->
<div role="tabpanel" class="tab-pane fade in active" id="register">
<h2>Sign up!</h2>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div class="field">
<%= f.label :company_Serial %><br />
<%= text_field_tag :company_serial, params[:company_serial], class: 'form-control center-text', placeholder: "XXXXX-XXXXXX-XXXXX-XXXX" %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true, class: 'form-control center-text', placeholder: "example@test.com" %>
</div>
<div class="field">
<%= f.label :password %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end %><br />
<%= f.password_field :password, autocomplete: "off", class: 'form-control center-text', placeholder: "password" %>
</div>
<div class="field">
<%= f.label :password_Confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "off", class: 'form-control center-text', placeholder: "confirm password" %>
</div>
<div class="actions center">
<%= f.submit "Sign up", class: "btn" %>
</div>
<% end %>
</div>
<!-- login tab -->
<div role="tabpanel" class="tab-pane fade" id="login">
<%= render 'partials/login_form' %>
</div>
</div>
</div> <!--Panel tag-->
</div> <!--col-md-8 tag-->
</div> <!--row tag-->
</div> <!--container tag-->

View File

@ -1,4 +1,4 @@
<h2>Log</h2> <h2>Log In</h2>
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %> <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<div class="field"> <div class="field">

View File

@ -0,0 +1,25 @@
<%- if controller_name != 'sessions' %>
<%= link_to "Log in", new_session_path(resource_name) %><br />
<% end -%>
<%- if devise_mapping.registerable? && controller_name != 'registrations' %>
<%= link_to "Sign up", new_registration_path(resource_name) %><br />
<% end -%>
<%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %>
<%= link_to "Forgot your password?", new_password_path(resource_name) %><br />
<% end -%>
<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
<%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %><br />
<% end -%>
<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
<%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %><br />
<% end -%>
<%- if devise_mapping.omniauthable? %>
<%- resource_class.omniauth_providers.each do |provider| %>
<%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider) %><br />
<% end -%>
<% end -%>

View File

@ -30,4 +30,4 @@
</div> </div>
<% end %> <% end %>
<%= render "users/shared/links" %> <!--<%= render "users/shared/links" %>-->

View File

@ -22,4 +22,4 @@
<%- resource_class.omniauth_providers.each do |provider| %> <%- resource_class.omniauth_providers.each do |provider| %>
<%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider) %><br /> <%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider) %><br />
<% end -%> <% end -%>
<% end -%> <% end -%>

View File

@ -11,5 +11,7 @@ module Pearlception
# Settings in config/environments/* take precedence over those specified here. # Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers # Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded. # -- all .rb files in that directory are automatically loaded.
config.middleware.use 'Apartment::Elevators::Subdomain'
Rails.application.config.middleware.insert_before 'Warden::Manager', 'Apartment::Elevators::Subdomain'
end end
end end

View File

@ -21,9 +21,9 @@ stats_development: &stats
adapter: mysql2 adapter: mysql2
encoding: utf8 encoding: utf8
pool: 5 pool: 5
username: <%= ENV['STATS_DB_USER'] %> username: # <%= ENV['STATS_DB_USER'] %>
password: <%= ENV['STATS_DB_PASS'] %> password: # <%= ENV['STATS_DB_PASS'] %>
host: <%= ENV['STATS_DB_URL'] %> host: # <%= ENV['STATS_DB_URL'] %>
port: 3306 port: 3306
database: main database: main
@ -34,6 +34,8 @@ stats_test:
development: development:
<<: *default <<: *default
database: Pearlception_development database: Pearlception_development
username: root
password: Kemitscafe1
# Warning: The database defined as "test" will be erased and # Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake". # re-generated from your development database when you run "rake".
@ -41,6 +43,8 @@ development:
test: test:
<<: *default <<: *default
database: Pearlception_test database: Pearlception_test
username: root
password: Kemitscafe1
# As with config/secrets.yml, you never want to store sensitive information, # As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is # like your database password, in your source code. If your source code is

View File

@ -0,0 +1,115 @@
# You can have Apartment route to the appropriate Tenant by adding some Rack middleware.
# Apartment can support many different "Elevators" that can take care of this routing to your data.
# Require whichever Elevator you're using below or none if you have a custom one.
#
# require 'apartment/elevators/generic'
# require 'apartment/elevators/domain'
require 'apartment/elevators/subdomain'
# require 'apartment/elevators/first_subdomain'
#
# Apartment Configuration
#
Apartment.configure do |config|
# Add any models that you do not want to be multi-tenanted, but remain in the global (public) namespace.
# A typical example would be a Customer or Tenant model that stores each Tenant's information.
#
config.excluded_models = [ "User", "Company" ]
# In order to migrate all of your Tenants you need to provide a list of Tenant names to Apartment.
# You can make this dynamic by providing a Proc object to be called on migrations.
# This object should yield either:
# - an array of strings representing each Tenant name.
# - a hash which keys are tenant names, and values custom db config (must contain all key/values required in database.yml)
#
# config.tenant_names = lambda{ Customer.pluck(:tenant_name) }
# config.tenant_names = ['tenant1', 'tenant2']
# config.tenant_names = {
# 'tenant1' => {
# adapter: 'postgresql',
# host: 'some_server',
# port: 5555,
# database: 'postgres' # this is not the name of the tenant's db
# # but the name of the database to connect to before creating the tenant's db
# # mandatory in postgresql
# },
# 'tenant2' => {
# adapter: 'postgresql',
# database: 'postgres' # this is not the name of the tenant's db
# # but the name of the database to connect to before creating the tenant's db
# # mandatory in postgresql
# }
# }
# config.tenant_names = lambda do
# Tenant.all.each_with_object({}) do |tenant, hash|
# hash[tenant.name] = tenant.db_configuration
# end
# end
#
names = (Company.pluck :company_name) - ["IVA"]
#client = Mysql2::Client.new(
# :adapter => "mysql2",
# :host => ENV['STATS_DB_URL'],
# :username => ENV['STATS_DB_USER'],
# :password => ENV['STATS_DB_PASS']
#)
names.map!{|tenant| tenant.gsub(/'/,'').gsub(/\s/,'')}
#names.each {
# |tenant|
# binding.pry
# if ENV['RAILS_ENV'] == "production"
# client.query("CREATE DATABASE IF NOT EXISTS #{tenant};")
# else
# client.query("CREATE DATABASE IF NOT EXISTS #{tenant};")
# end
#}
# client.close
config.tenant_names = names
#names = (Company.pluck :company_name) - ["IVA"]
#
# ==> PostgreSQL only options
# Specifies whether to use PostgreSQL schemas or create a new database per Tenant.
# The default behaviour is true.
#
config.use_schemas = false
# Apartment can be forced to use raw SQL dumps instead of schema.rb for creating new schemas.
# Use this when you are using some extra features in PostgreSQL that can't be respresented in
# schema.rb, like materialized views etc. (only applies with use_schemas set to true).
# (Note: this option doesn't use db/structure.sql, it creates SQL dump by executing pg_dump)
#
# config.use_sql = false
# There are cases where you might want some schemas to always be in your search_path
# e.g when using a PostgreSQL extension like hstore.
# Any schemas added here will be available along with your selected Tenant.
#
# config.persistent_schemas = %w{ hstore }
# <== PostgreSQL only options
#
# By default, and only when not using PostgreSQL schemas, Apartment will prepend the environment
# to the tenant name to ensure there is no conflict between your environments.
# This is mainly for the benefit of your development and test environments.
# Uncomment the line below if you want to disable this behaviour in production.
#
config.prepend_environment = !Rails.env.production?
end
# Setup a custom Tenant switching middleware. The Proc should return the name of the Tenant that
# you want to switch to.
# Rails.application.config.middleware.use 'Apartment::Elevators::Generic', lambda { |request|
# request.host.split('.').first
# }
# Rails.application.config.middleware.use 'Apartment::Elevators::Domain'
Rails.application.config.middleware.use 'Apartment::Elevators::Subdomain'
# Rails.application.config.middleware.use 'Apartment::Elevators::FirstSubdomain'

View File

@ -12,5 +12,7 @@ Rails.application.routes.draw do
get 'signin' => 'registrations#new' get 'signin' => 'registrations#new'
post 'signin' => 'registrations#create' post 'signin' => 'registrations#create'
end end
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end end

View File

@ -5,6 +5,7 @@ class DeviseCreateUsers < ActiveRecord::Migration[5.0]
t.string :email, null: false, default: "" t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: "" t.string :encrypted_password, null: false, default: ""
t.integer :company_id, null: false t.integer :company_id, null: false
t.boolean :admin, null: false, default: false
## Recoverable ## Recoverable
t.string :reset_password_token t.string :reset_password_token

View File

@ -0,0 +1,19 @@
class CreateGrades < ActiveRecord::Migration[5.0]
def change
create_table :grades do |t|
t.string :Full_name, limit: 100, :null => false
t.string :Short_name, limit: 10, :null => false
t.column :Volume_max, :double
t.column :Volume_min, :double
t.column :Length_max, :double
t.column :Length_min, :double
t.column :Width_max, :double
t.column :Width_min, :double
t.column :Height_max, :double
t.column :Height_min, :double
t.timestamps
end
add_index :grades, :Short_name, unique: true
end
end

View File

@ -0,0 +1,16 @@
class CreateRuns < ActiveRecord::Migration[5.0]
def change
create_table :runs do |t|
t.datetime :runDate, :null => false
t.string :location, limit: 50
t.string :harvest_time, limit: 50
t.string :supplier, limit: 50
t.string :distributor, limit: 50
t.string :other, limit: 50
t.integer :machine_id
t.timestamps
end
add_index :runs, :machine_id
end
end

View File

@ -0,0 +1,9 @@
class CreateMachines < ActiveRecord::Migration[5.0]
def change
create_table :machines do |t|
t.text :key, limit: 1000
t.timestamps
end
end
end

View File

@ -0,0 +1,23 @@
class CreateResults < ActiveRecord::Migration[5.0]
def change
create_table :results do |t|
t.column :total, :integer , :null => false
t.column :grade1, :integer
t.column :grade2, :integer
t.column :grade3, :integer
t.column :grade4, :integer
t.column :grade5, :integer
t.column :grade6, :integer
t.column :grade7, :integer
t.column :grade8, :integer
t.column :grade9, :integer
t.column :grade10, :integer
t.integer :machine_id
t.integer :run_id
t.timestamps
end
add_index :results, :machine_id
add_index :results, :run_id
end
end

View File

@ -0,0 +1,17 @@
class CreateOysters < ActiveRecord::Migration[5.0]
def change
create_table :oysters do |t|
t.integer :run_id, :null => false
t.string :grade, limit: 50, :null => false
t.column :volume, :double
t.column :length, :double
t.column :width, :double
t.column :height, :double
t.integer :machine_id
t.timestamps
end
add_index :oysters, :run_id
add_index :oysters, :machine_id
end
end

View File

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20170119161737) do ActiveRecord::Schema.define(version: 20170210202948) do
create_table "companies", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| create_table "companies", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.string "company_name" t.string "company_name"
@ -19,21 +19,90 @@ ActiveRecord::Schema.define(version: 20170119161737) do
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
end end
create_table "grades", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.string "Full_name", limit: 100, null: false
t.string "Short_name", limit: 10, null: false
t.float "Volume_max", limit: 53
t.float "Volume_min", limit: 53
t.float "Length_max", limit: 53
t.float "Length_min", limit: 53
t.float "Width_max", limit: 53
t.float "Width_min", limit: 53
t.float "Height_max", limit: 53
t.float "Height_min", limit: 53
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["Short_name"], name: "index_grades_on_Short_name", unique: true, using: :btree
end
create_table "machines", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.text "key", limit: 65535
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "oysters", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.integer "run_id", null: false
t.string "grade", limit: 50, null: false
t.float "volume", limit: 53
t.float "length", limit: 53
t.float "width", limit: 53
t.float "height", limit: 53
t.integer "machine_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["machine_id"], name: "index_oysters_on_machine_id", using: :btree
t.index ["run_id"], name: "index_oysters_on_run_id", using: :btree
end
create_table "results", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.integer "total", null: false
t.integer "grade1"
t.integer "grade2"
t.integer "grade3"
t.integer "grade4"
t.integer "grade5"
t.integer "grade6"
t.integer "grade7"
t.integer "grade8"
t.integer "grade9"
t.integer "grade10"
t.integer "machine_id"
t.integer "run_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["machine_id"], name: "index_results_on_machine_id", using: :btree
t.index ["run_id"], name: "index_results_on_run_id", using: :btree
end
create_table "runs", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.datetime "runDate", null: false
t.string "location", limit: 50
t.string "harvest_time", limit: 50
t.string "supplier", limit: 50
t.string "distributor", limit: 50
t.string "other", limit: 50
t.integer "machine_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["machine_id"], name: "index_runs_on_machine_id", using: :btree
end
create_table "users", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| create_table "users", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.string "email", default: "", null: false t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false t.string "encrypted_password", default: "", null: false
t.integer "company_id", null: false t.integer "company_id", default: -1, null: false
t.boolean "admin", default: false, null: false t.boolean "admin", default: false, null: false
t.string "reset_password_token" t.string "reset_password_token"
t.datetime "reset_password_sent_at" t.datetime "reset_password_sent_at"
t.datetime "remember_created_at" t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at" t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at" t.datetime "last_sign_in_at"
t.string "current_sign_in_ip" t.string "current_sign_in_ip"
t.string "last_sign_in_ip" t.string "last_sign_in_ip"
t.datetime "created_at", null: false t.datetime "created_at", null: false
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
t.index ["email"], name: "index_users_on_email", unique: true, using: :btree t.index ["email"], name: "index_users_on_email", unique: true, using: :btree
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
end end

View File

@ -5,3 +5,12 @@
# #
# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) # movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
# Character.create(name: 'Luke', movie: movies.first) # Character.create(name: 'Luke', movie: movies.first)
require 'securerandom'
#create admin company for login access
Company.create(company_name: 'IVA', company_token: 'a41b23cf-1d61-4fb4-9b69-0167abd7c583')
if Rails.env == 'development'
Company.create(company_name: "Taylors", company_token: SecureRandom.uuid)
Company.create(company_name: "Hooper's Island", company_token: SecureRandom.uuid)
end

View File

@ -0,0 +1,13 @@
#!/bin/env ruby
ENV['RAILS_ENV'] = "development" # Set to your desired Rails environment name
require '/../config/environment.rb'
require 'active_record'
client = Mysql2::Client.new(:adapter => "mysql2",
:host => ENV['STATS_DB_URL'],
:username => ENV['STATS_DB_USER'],
:password => ENV['STATS_DB_PASS'],
)
#client.query("CREATE DATABASE company_db")

25
Pearlception/test/fixtures/grades.yml vendored Normal file
View File

@ -0,0 +1,25 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
Full_name: MyString
Short_name: MyString
Volume_max:
Volume_min:
Length_max:
Length_min:
Width_max:
Width_min:
Height_max:
Height_min:
two:
Full_name: MyString
Short_name: MyString
Volume_max:
Volume_min:
Length_max:
Length_min:
Width_max:
Width_min:
Height_max:
Height_min:

View File

@ -0,0 +1,7 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
key: MyText
two:
key: MyText

19
Pearlception/test/fixtures/oysters.yml vendored Normal file
View File

@ -0,0 +1,19 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
run_id: 1
grade: MyString
volume:
length:
width:
height:
machine_id: 1
two:
run_id: 1
grade: MyString
volume:
length:
width:
height:
machine_id: 1

17
Pearlception/test/fixtures/results.yml vendored Normal file
View File

@ -0,0 +1,17 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
total: 1
grade1: 1
grade2: 1
grade3: 1
machine_id: 1
run_id: 1
two:
total: 1
grade1: 1
grade2: 1
grade3: 1
machine_id: 1
run_id: 1

19
Pearlception/test/fixtures/runs.yml vendored Normal file
View File

@ -0,0 +1,19 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
runDate: 2017-02-10 15:01:22
location: MyString
harvest_time: MyString
supplier: MyString
distributor: MyString
other: MyString
machine_id: 1
two:
runDate: 2017-02-10 15:01:22
location: MyString
harvest_time: MyString
supplier: MyString
distributor: MyString
other: MyString
machine_id: 1

View File

@ -0,0 +1,7 @@
require 'test_helper'
class GradeTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end

View File

@ -0,0 +1,7 @@
require 'test_helper'
class MachineTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end

View File

@ -1,18 +1,7 @@
require 'test_helper' require 'test_helper'
class OysterTest < ActiveSupport::TestCase class OysterTest < ActiveSupport::TestCase
# test "the truth" do
test "check_connection" do # assert true
Oyster.connection # end
assert true
end
test "get_first_oyster" do
first = Oyster.first
id = first.oyster_id == 1
run = first.run_id == 257
grade = first.grade == "Rej"
assert id && run && grade
end
end end

View File

@ -0,0 +1,7 @@
require 'test_helper'
class ResultTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end

View File

@ -0,0 +1,7 @@
require 'test_helper'
class RunTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end