diff --git a/Gemfile b/Gemfile index d9dd0bdf..f95b4e4a 100644 --- a/Gemfile +++ b/Gemfile @@ -52,11 +52,6 @@ gem "http_accept_language", :git => "https://github.com/iain/http_accept_languag gem 'globalize', '~> 4.0.3' -# My flex branch fixes a minor pagination bug. Once it's merged into the -# original gem, we can switch back. -gem "flex", :require => "flex/rails", :git => "https://github.com/matchu/flex.git" -gem "patron", "~> 0.4.18" - gem "rest-client", "~> 1.6.7" gem 'rails-i18n', '~> 4.0', '>= 4.0.9' diff --git a/Gemfile.lock b/Gemfile.lock index 1fe1d4e7..fadedcb4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,15 +4,6 @@ GIT specs: http_accept_language (2.1.1) -GIT - remote: https://github.com/matchu/flex.git - revision: 6d7e3fd6e2845ae978545be67b912323888d1ebb - specs: - flex (0.4.1) - multi_json (~> 1.3.4) - progressbar (~> 0.11.0) - prompter (~> 0.1.5) - GIT remote: https://github.com/matchu/neopets.git revision: 5d13a720b616ba57fbbd54541f3e5daf02b3fedc @@ -98,7 +89,6 @@ GEM dotenv-deployment (0.0.2) dotenv-rails (2.0.1) dotenv (= 2.0.1) - dye (0.1.4) erubis (2.7.0) excon (0.45.4) execjs (2.5.2) @@ -157,11 +147,6 @@ GEM orm_adapter (0.5.0) parallel (1.13.0) passenger_monit (0.1.1) - patron (0.4.20) - progressbar (0.11.0) - prompter (0.1.6) - dye (>= 0.1.1) - yard (>= 0.6.3) rack (1.5.5) rack-attack (2.2.1) rack @@ -272,7 +257,6 @@ GEM activesupport (>= 2.3.4) chronic (~> 0.6.3) will_paginate (3.0.7) - yard (0.9.34) PLATFORMS ruby @@ -289,7 +273,6 @@ DEPENDENCIES dotenv-deployment dotenv-rails factory_girl_rails (~> 1.0) - flex! fog (~> 1.8.0) globalize (~> 4.0.3) haml (~> 4.0.0) @@ -304,7 +287,6 @@ DEPENDENCIES openneo-auth-signatory (~> 0.1.0) parallel (~> 1.13.0) passenger_monit (~> 0.1.1) - patron (~> 0.4.18) rack-attack (~> 2.2.0) rails (= 4.0.13) rails-i18n (~> 4.0, >= 4.0.9) diff --git a/app/flex/flex_search.rb b/app/flex/flex_search.rb deleted file mode 100644 index 23f88cff..00000000 --- a/app/flex/flex_search.rb +++ /dev/null @@ -1,18 +0,0 @@ -# inspect the methods loaded in this module and their usage -# in the rails console by just typing: -# >> puts FlexSearch.flex.info -# you can eventually restrict the info to a single method by pasing its name: -# >> puts FlexSearch.flex.info :search -# see the detailed doc for this feature at https://github.com/ddnexus/flex/wiki/Selfdoc - -module FlexSearch - - extend self - - include Flex::Loader - flex.load_search_source - - # you may need to add more method here, usually wrapper methods - # that use one of the autogenerated methods from the loaded templates - -end diff --git a/app/flex/flex_search.yml b/app/flex/flex_search.yml deleted file mode 100644 index 3b0e354c..00000000 --- a/app/flex/flex_search.yml +++ /dev/null @@ -1,100 +0,0 @@ -# Add here your search queries -# see the detailed Source documentation at https://github.com/ddnexus/flex/wiki/Sources - - -# ANCHORS litheral key: it will not be used as template -# you can store here fragments of queries to reuse in the templates below -ANCHORS: - - &name_partial - multi_match: - query: <> - fields: <> - type: phrase - - &species_support_id_partial - term: - species_support_id: <> - - &occupied_zone_id_partial - terms: - occupied_zone_id: <> - - &restricted_zone_id_partial - terms: - restricted_zone_id: <> - - &user_closet_hangers_ownership_partial - has_child: - type: closet_hanger - query: - bool: - must: - - term: - user_id: <> - - term: - owned: <> - - &body_id_partial - constant_score: - filter: - or: - query: - - term: - body_id: <> - - term: - body_id: 0 - -_names: - *name_partial - -_negative_names: - *name_partial - -_species_support_ids: - *species_support_id_partial - -_negative_species_support_ids: - *species_support_id_partial - -_occupied_zone_ids: - *occupied_zone_id_partial - -_negative_occupied_zone_ids: - *occupied_zone_id_partial - -_restricted_zone_ids: - *restricted_zone_id_partial - -_negative_restricted_zone_ids: - *restricted_zone_id_partial - -_user_closet_hanger_ownerships: - *user_closet_hangers_ownership_partial - -_negative_user_closet_hanger_ownerships: - *user_closet_hangers_ownership_partial - -_fits_pet_types: - *body_id_partial - -_negative_fits_pet_types: - *body_id_partial - -item_search: - - query: - bool: - must: - - term: - is_nc: <> - - term: - is_pb: <> - - <<_names= ~>> - - <<_species_support_ids= ~>> - - <<_occupied_zone_ids= ~>> - - <<_restricted_zone_ids= ~>> - - <<_user_closet_hanger_ownerships= ~>> - - <<_fits_pet_types= ~>> - must_not: - - <<_negative_names= ~>> - - <<_negative_species_support_ids= ~>> - - <<_negative_occupied_zone_ids= ~>> - - <<_negative_restricted_zone_ids= ~>> - - <<_negative_user_closet_hanger_ownerships= ~>> - - <<_negative_fits_pet_types= ~>> - sort: - - name.<>.untouched diff --git a/app/flex/flex_search_extender.rb b/app/flex/flex_search_extender.rb deleted file mode 100644 index 06d59151..00000000 --- a/app/flex/flex_search_extender.rb +++ /dev/null @@ -1,45 +0,0 @@ -# see the detailed Extenders documentation at https://github.com/ddnexus/flex/wiki/Extenders - -module FlexSearchExtender - - # set this method to restrict this extender to certain types of results - # see the other Flex extenders for reference (https://github.com/ddnexus/flex/tree/master/lib/flex/result) - def self.should_extend?(response) - true - end - - def proxied_collection - Item.build_proxies(collection.map(&:_id)).tap do |proxies| - proxies.extend Flex::Result::Collection - proxies.setup(self['hits']['total'], variables) - end - end - - def scoped_loaded_collection(options) - options[:scopes] ||= {} - @loaded_collection ||= begin - records_by_class_and_id_str = {} - grouped_collection = collection.group_by { |d| - d.mapped_class(should_raise=true) - } - grouped_collection.each do |klass, docs| - record_ids = docs.map(&:_id) - scope = options[:scopes][klass.name] || klass.scoped - records = scope.find(record_ids) - records.each do |record| - records_by_class_and_id_str[record.class] ||= {} - records_by_class_and_id_str[record.class][record.id.to_s] = record - end - end - - # Reorder records to preserve order from search results - records = collection.map do |d| - records_by_class_and_id_str[d.mapped_class][d._id] - end - records.extend Flex::Result::Collection - records.setup(self['hits']['total'], variables) - records - end - end - -end diff --git a/app/models/closet_hanger.rb b/app/models/closet_hanger.rb index 8e657ab0..dce8a432 100644 --- a/app/models/closet_hanger.rb +++ b/app/models/closet_hanger.rb @@ -1,6 +1,4 @@ class ClosetHanger < ActiveRecord::Base - include Flex::Model - belongs_to :item belongs_to :list, :class_name => 'ClosetList' belongs_to :user @@ -39,29 +37,6 @@ class ClosetHanger < ActiveRecord::Base end before_validation :merge_quantities, :set_owned_by_list - - if Flex::Configuration.hangers_enabled - flex.parent :item, 'item' => 'closet_hanger' - flex.sync self, callbacks: [:save] # we handle destroy more carefully - end - - after_destroy do - begin - flex.remove - rescue Flex::HttpError - # This usually means that the record was already dropped from - # the search engine. Weird, but okay; if the search engine is - # erroneously in the correct state, let it be. - end - end - - def flex_source - { - :user_id => user_id, - :item_id => item_id, - :owned => owned? - }.to_json - end def possibly_null_closet_list list || user.null_closet_list(owned) @@ -147,6 +122,7 @@ class ClosetHanger < ActiveRecord::Base # Find a hanger that conflicts: for the same item, in the same user's # closet, same owned status, same list. It also must not be the current # hanger. Select enough for our logic and to update flex_source. + # TODO: We deleted flex, does this reduce what data we need here? conflicting_hanger = self.class.select([:id, :quantity, :user_id, :item_id, :owned]). where(:user_id => user_id, :item_id => item_id, :owned => owned, diff --git a/app/models/item.rb b/app/models/item.rb index 529d0e83..f34314ca 100644 --- a/app/models/item.rb +++ b/app/models/item.rb @@ -1,5 +1,4 @@ class Item < ActiveRecord::Base - include Flex::Model include PrettyParam set_inheritance_column 'inheritance_type' # PHP Impress used "type" to describe category @@ -40,29 +39,6 @@ class Item < ActiveRecord::Base scope :sitemap, order([:id]).limit(49999) scope :with_closet_hangers, joins(:closet_hangers) - - # Syncing is now handled in background tasks, created in the ItemObserver. - flex.sync self, callbacks: [] - - def flex_source - indexed_attributes = { - :is_nc => self.nc?, - :is_pb => self.pb?, - :species_support_id => self.supported_species_ids, - :occupied_zone_id => self.occupied_zone_ids, - :restricted_zone_id => self.restricted_zone_ids, - :body_id => self.modeled_body_ids, - :name => {} - } - - I18n.usable_locales_with_neopets_language_code.each do |locale| - I18n.with_locale(locale) do - indexed_attributes[:name][locale] = self.name - end - end - - indexed_attributes.to_json - end def closeted? @owned || @wanted diff --git a/config/flex.yml b/config/flex.yml deleted file mode 100644 index cafed29b..00000000 --- a/config/flex.yml +++ /dev/null @@ -1,60 +0,0 @@ -# ANCHORS litheral key: it will not be used as template -# you can store here fragments of structures to reuse below -ANCHORS: - - - -# This is a dynamic index name The settings and mapping below will work with any index. -# The default index name generated by Flex is usually _, -# but you may have changed it in the initializers/flex.rb or you can hardcode it if you prefer. -<%= Flex::Configuration.variables[:index] %>: - - settings: - number_of_shards: 5 - number_of_replicas: 1 - - analysis: - analyzer: - item_name_index: - type: custom - tokenizer: item_name - filter: - - lowercase - - asciifolding - - item_name_search: - type: custom - tokenizer: keyword - filter: - - lowercase - - asciifolding - - tokenizer: - item_name: - type: ngram - min_gram: 3 - max_gram: 16 - - # add your custom mappings here - mappings: - item: - properties: - # Name is an object of locale fields, which are in turn multi_fields. - # First, an analyzed string for searching. Second, an untouched - # string for sorting. Elasticsearch requires that both be expliticly - # named in the mapping, but will handle the copy implicitly. - name: - type: object - properties: - <% I18n.usable_locales_with_neopets_language_code.each do |locale| %> - <%= locale %>: - type: multi_field - fields: - <%= locale %>: - type: string - index: analyzed - index_analyzer: item_name_index - search_analyzer: item_name_search - untouched: - type: string - index: not_analyzed - <% end %> diff --git a/config/initializers/flex.rb b/config/initializers/flex.rb deleted file mode 100644 index baf5ff29..00000000 --- a/config/initializers/flex.rb +++ /dev/null @@ -1,51 +0,0 @@ -# see the detailed Configuration documentation at https://github.com/ddnexus/flex/wiki/Configuration - -Flex::Configuration.configure do |config| - - # If queries like "user:owns" are too much for the server to handle (not - # enough RAM?), set to false to stop indexing closet hangers and disable - # item queries that reference them. - config.hangers_enabled = true - - # you MUST add your indexed model names here - config.flex_models = %w[ Item ] - config.flex_models << 'ClosetHanger' if config.hangers_enabled - - - # Add the your result extenders here - config.result_extenders |= [ FlexSearchExtender ] - - # Add the default variables here - # see also the details Variables documentation at https://github.com/ddnexus/flex/wiki/Variables - # config.variables.add :index => 'my_index', - # :type => 'project', - # :anything => 'anything - - # The custom url of your ElasticSearch server - # config.base_uri = 'http://localhost:9200' - - # Set it to true to log the debug infos (true by default in development mode) - # config.debug = false - - # Debug info are actually valid curl commands - # config.debug_to_curl = false - - # The custom logger you want Flex to use. Default Rails.logger - # config.logger = Logger.new(STDERR) - - # Custom config file path - # config.config_file = '/custom/path/to/flex.yml', - - # Custom flex dir path - # config.flex_dir = '/custom/path/to/flex', - - # The custom http_client you may want to implement - # config.http_client = 'Your::Client' - - # The options passed to the http_client. They are client specific. - # config.http_client_options = {:timeout => 5} - - # Experimental: checks the response and return a boolean (should raise?) - # config.raise_proc = proc{|response| response.status >= 400} - -end diff --git a/vendor/cache/dye-0.1.4.gem b/vendor/cache/dye-0.1.4.gem deleted file mode 100644 index 016907ff..00000000 Binary files a/vendor/cache/dye-0.1.4.gem and /dev/null differ diff --git a/vendor/cache/patron-0.4.20.gem b/vendor/cache/patron-0.4.20.gem deleted file mode 100644 index 26e3dfa8..00000000 Binary files a/vendor/cache/patron-0.4.20.gem and /dev/null differ diff --git a/vendor/cache/progressbar-0.11.0.gem b/vendor/cache/progressbar-0.11.0.gem deleted file mode 100644 index 97f176f8..00000000 Binary files a/vendor/cache/progressbar-0.11.0.gem and /dev/null differ diff --git a/vendor/cache/prompter-0.1.6.gem b/vendor/cache/prompter-0.1.6.gem deleted file mode 100644 index d626fc8b..00000000 Binary files a/vendor/cache/prompter-0.1.6.gem and /dev/null differ diff --git a/vendor/cache/yard-0.9.34.gem b/vendor/cache/yard-0.9.34.gem deleted file mode 100644 index 6946b641..00000000 Binary files a/vendor/cache/yard-0.9.34.gem and /dev/null differ