app can now load environment even if schema not yet loaded

This commit is contained in:
Emi Matchu 2011-09-06 11:15:09 -05:00
parent c489f2802d
commit 285c7858c0
6 changed files with 721 additions and 4073 deletions

View file

@ -40,7 +40,7 @@ class Item < ActiveRecord::Base
scope :newest, order(arel_table[:created_at].desc) if arel_table[:created_at] scope :newest, order(arel_table[:created_at].desc) if arel_table[:created_at]
scope :spidered_longest_ago, order(["(#{Item.arel_table[:last_spidered].eq(nil).to_sql}) DESC", arel_table[:last_spidered].desc]) scope :spidered_longest_ago, order(["(last_spidered IS NULL) DESC", "last_spidered DESC"])
scope :sold_in_mall, where(:sold_in_mall => true) scope :sold_in_mall, where(:sold_in_mall => true)
scope :not_sold_in_mall, where(:sold_in_mall => false) scope :not_sold_in_mall, where(:sold_in_mall => false)
@ -678,13 +678,16 @@ class Item < ActiveRecord::Base
search_filter :description do |description| search_filter :description do |description|
arel_table[:description].matches("%#{description}%") arel_table[:description].matches("%#{description}%")
end end
def self.adjective_filters
@adjective_filters ||= {
'nc' => arel_table[:rarity_index].in(NCRarities),
'pb' => arel_table[:description].eq(PAINTBRUSH_SET_DESCRIPTION)
}
end
ADJECTIVE_FILTERS = {
'nc' => arel_table[:rarity_index].in(NCRarities),
'pb' => arel_table[:description].eq(PAINTBRUSH_SET_DESCRIPTION)
}
search_filter :is do |adjective| search_filter :is do |adjective|
filter = ADJECTIVE_FILTERS[adjective] filter = adjective_filters[adjective]
unless filter unless filter
raise SearchError, raise SearchError,
"We don't know how an item can be \"#{adjective}\". " + "We don't know how an item can be \"#{adjective}\". " +

View file

@ -11,23 +11,29 @@ class PetType < ActiveRecord::Base
BasicHashes = YAML::load_file(Rails.root.join('config', 'basic_type_hashes.yml')) BasicHashes = YAML::load_file(Rails.root.join('config', 'basic_type_hashes.yml'))
StandardPetTypesBySpeciesId = PetType.where(arel_table[:color_id].in(Color::BasicIds)).group_by(&:species_id)
StandardBodyIds = [].tap do |body_ids|
StandardPetTypesBySpeciesId.each do |species_id, pet_types|
body_ids.concat(pet_types.map(&:body_id))
end
end
# Returns all pet types of a single standard color. The caller shouldn't care # Returns all pet types of a single standard color. The caller shouldn't care
# which, though, in this implemention, it's always Blue. Don't depend on that. # which, though, in this implemention, it's always Blue. Don't depend on that.
scope :single_standard_color, where(:color_id => Color::BasicIds[0]) scope :single_standard_color, where(:color_id => Color::BasicIds[0])
scope :nonstandard_colors, where(:color_id => Color.nonstandard_ids) scope :nonstandard_colors, where(:color_id => Color.nonstandard_ids)
def self.standard_pet_types_by_species_id
@standard_pet_types_by_species_id ||=
PetType.where(:color_id => Color::BasicIds).group_by(&:species_id)
end
def self.standard_body_ids
@standard_body_ids ||= [].tap do |body_ids|
standard_pet_types_by_species_id.each do |species_id, pet_types|
body_ids.concat(pet_types.map(&:body_id))
end
end
end
def self.random_basic_per_species(species_ids) def self.random_basic_per_species(species_ids)
random_pet_types = [] random_pet_types = []
species_ids.each do |species_id| species_ids.each do |species_id|
pet_types = StandardPetTypesBySpeciesId[species_id] pet_types = standard_pet_types_by_species_id[species_id]
random_pet_types << pet_types[rand(pet_types.size)] if pet_types random_pet_types << pet_types[rand(pet_types.size)] if pet_types
end end
random_pet_types random_pet_types

View file

@ -123,14 +123,17 @@ class SwfAsset < ActiveRecord::Base
:conditions => {:swf_asset_type => 'object'} :conditions => {:swf_asset_type => 'object'}
delegate :depth, :to => :zone delegate :depth, :to => :zone
def self.body_ids_fitting_standard
@body_ids_fitting_standard ||= PetType.standard_body_ids + [0]
end
scope :fitting_body_id, lambda { |body_id| scope :fitting_body_id, lambda { |body_id|
where(arel_table[:body_id].in([body_id, 0])) where(arel_table[:body_id].in([body_id, 0]))
} }
BodyIdsFittingStandard = PetType::StandardBodyIds + [0]
scope :fitting_standard_body_ids, lambda { scope :fitting_standard_body_ids, lambda {
where(arel_table[:body_id].in(BodyIdsFittingStandard)) where(arel_table[:body_id].in(body_ids_fitting_standard))
} }
scope :fitting_color, lambda { |color| scope :fitting_color, lambda { |color|
@ -138,8 +141,8 @@ class SwfAsset < ActiveRecord::Base
where(arel_table[:body_id].in(body_ids)) where(arel_table[:body_id].in(body_ids))
} }
scope :biology_assets, where(arel_table[:type].eq(PetState::SwfAssetType)) scope :biology_assets, where(:type => PetState::SwfAssetType)
scope :object_assets, where(arel_table[:type].eq(Item::SwfAssetType)) scope :object_assets, where(:type => Item::SwfAssetType)
scope :for_item_ids, lambda { |item_ids| scope :for_item_ids, lambda { |item_ids|
joins(:object_asset_relationships). joins(:object_asset_relationships).
where(ParentSwfAssetRelationship.arel_table[:parent_id].in(item_ids)) where(ParentSwfAssetRelationship.arel_table[:parent_id].in(item_ids))

View file

@ -10,7 +10,7 @@ class User < ActiveRecord::Base
has_many :contributions has_many :contributions
has_many :outfits has_many :outfits
scope :top_contributors, order('points DESC').where(arel_table[:points].gt(0)) scope :top_contributors, order('points DESC').where('points > 0')
devise :rememberable devise :rememberable

View file

@ -1,84 +1,25 @@
/* line 29, ../../../../../.rvm/gems/ree-1.8.7-2010.02/gems/compass-0.10.6/frameworks/blueprint/stylesheets/blueprint/_print.scss */ body { line-height: 1.5; font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; color: black; background: none; font-size: 10pt; }
body {
line-height: 1.5;
font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
color: black;
background: none;
font-size: 10pt;
}
/* line 52, ../../../../../.rvm/gems/ree-1.8.7-2010.02/gems/compass-0.10.6/frameworks/blueprint/stylesheets/blueprint/_print.scss */ .container { background: none; }
.container {
background: none;
}
/* line 54, ../../../../../.rvm/gems/ree-1.8.7-2010.02/gems/compass-0.10.6/frameworks/blueprint/stylesheets/blueprint/_print.scss */ hr { background: #cccccc; color: #cccccc; width: 100%; height: 2px; margin: 2em 0; padding: 0; border: none; }
hr { hr.space { background: white; color: white; }
background: #cccccc;
color: #cccccc;
width: 100%;
height: 2px;
margin: 2em 0;
padding: 0;
border: none;
}
/* line 62, ../../../../../.rvm/gems/ree-1.8.7-2010.02/gems/compass-0.10.6/frameworks/blueprint/stylesheets/blueprint/_print.scss */
hr.space {
background: white;
color: white;
}
/* line 65, ../../../../../.rvm/gems/ree-1.8.7-2010.02/gems/compass-0.10.6/frameworks/blueprint/stylesheets/blueprint/_print.scss */ h1, h2, h3, h4, h5, h6 { font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; }
h1, h2, h3, h4, h5, h6 {
font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
}
/* line 67, ../../../../../.rvm/gems/ree-1.8.7-2010.02/gems/compass-0.10.6/frameworks/blueprint/stylesheets/blueprint/_print.scss */ code { font-size: 0.9em; font-family: "andale mono", "lucida console", monospace; }
code {
font-size: 0.9em;
font-family: "andale mono", "lucida console", monospace;
}
/* line 72, ../../../../../.rvm/gems/ree-1.8.7-2010.02/gems/compass-0.10.6/frameworks/blueprint/stylesheets/blueprint/_print.scss */ a img { border: none; }
a img { a:link, a:visited { background: transparent; font-weight: 700; text-decoration: underline; }
border: none;
}
/* line 75, ../../../../../.rvm/gems/ree-1.8.7-2010.02/gems/compass-0.10.6/frameworks/blueprint/stylesheets/blueprint/_print.scss */
a:link, a:visited {
background: transparent;
font-weight: 700;
text-decoration: underline;
}
/* line 79, ../../../../../.rvm/gems/ree-1.8.7-2010.02/gems/compass-0.10.6/frameworks/blueprint/stylesheets/blueprint/_print.scss */ p img.top { margin-top: 0; }
p img.top {
margin-top: 0;
}
/* line 81, ../../../../../.rvm/gems/ree-1.8.7-2010.02/gems/compass-0.10.6/frameworks/blueprint/stylesheets/blueprint/_print.scss */ blockquote { margin: 1.5em; padding: 1em; font-style: italic; font-size: 0.9em; }
blockquote {
margin: 1.5em;
padding: 1em;
font-style: italic;
font-size: 0.9em;
}
/* line 86, ../../../../../.rvm/gems/ree-1.8.7-2010.02/gems/compass-0.10.6/frameworks/blueprint/stylesheets/blueprint/_print.scss */ .small { font-size: 0.9em; }
.small {
font-size: 0.9em;
}
/* line 88, ../../../../../.rvm/gems/ree-1.8.7-2010.02/gems/compass-0.10.6/frameworks/blueprint/stylesheets/blueprint/_print.scss */ .large { font-size: 1.1em; }
.large {
font-size: 1.1em;
}
/* line 90, ../../../../../.rvm/gems/ree-1.8.7-2010.02/gems/compass-0.10.6/frameworks/blueprint/stylesheets/blueprint/_print.scss */ .quiet { color: #999999; }
.quiet {
color: #999999;
}
/* line 92, ../../../../../.rvm/gems/ree-1.8.7-2010.02/gems/compass-0.10.6/frameworks/blueprint/stylesheets/blueprint/_print.scss */ .hide { display: none; }
.hide {
display: none;
}

File diff suppressed because it is too large Load diff