Commit graph

425 commits

Author SHA1 Message Date
111d4dcaee Fix bug with Arel ordering
Ok so weird little situation, usually Arel will accept an attribute as a param to `order()`, but not when it's in a very specific situation of all of the following:

`Item.joins(:translations).includes(:translations).limit(30).order(Item::Translation.arel_table[:name])`

For some reason, it's all like "hey I can't call `to_sql` on an attribute!", but only in the scenario where all 3 of those other things are present. Weird!

Anyway, explicitly saying `.asc` fixes this. Ok!
2023-08-02 16:29:31 -07:00
4f564db785 Upgrade to Rails 5.2.8.1
Some important little upgrades but mostly straightforward!

Note that there's still a known issue where item searches crash, I was hoping that this was a bug in Rails 4.2 that would be fixed on upgading to 5, but nope, oh well!

Also uhh I just got a bit silly and didn't actually mean to go all the way to 5.2 in one go, I had meant to start at 5.0… but tbh the 5.1 and 5.2 changes seem small, and this seems to be working, so. Yeah ok let's roll!
2023-08-02 16:05:09 -07:00
88c2ecb43a Upgrade to Rails 4.2.11.3 and Ruby 2.4.10
Some tricks required here to get the dependencies to work out, but we got it!!

Oh also, we move away from the rbenv in Ubuntu's package manager, because it doesn't support more recent Rubies like 2.4.10.
2023-08-02 15:19:23 -07:00
fb04c68294 Remove pet state labeling & Neopets gem
This labeling technique hasn't worked in a long time bc it requires being logged in. These days we just manually label them with the 2020 support tools I think!

Clearing out the Neopets gem should help us manage some gem dep conflicts in the 4.2 upgrade too (I think the nokogiri one gets tricky?)
2023-08-02 14:58:16 -07:00
e7529f5bc3 Delete utf8 backfill for old Ruby
Idk if the replacement `require` is necessary exactly, but it's the one-to-one replacement for this lib, so let's start there for now!
2023-08-02 14:45:07 -07:00
89b3282d4d Remove RightAWS gem
We're not connecting to AWS directly anymore, now that we deleted the SWF conversion stuff, so we can finally clear this out!
2023-08-02 13:20:22 -07:00
Matchu
c44daea318 Delete Camo references & Addressable gem
At one point we piloted a "Camo" service to proxy HTTPS image urls for us, but it doesn't exist anymore.

We already have proxies and stuff for this, so I left `Image` as a placeholder for this, but it's not working yet!

This also deletes our final reference to the Addressable gem, so we can remove it!
2023-08-02 13:16:22 -07:00
Matchu
7e3658d329 Remove mall spider cron jobs
I don't think these work anymore, and our volunteers get new items into the db fast anyway, Impress 2020 is doing better spidering these days. And then we get to remove the cron job `whenever` gem!
2023-08-02 13:11:51 -07:00
Matchu
e11cfbf016 Remove OutfitImageUploader and Carrierwave
Ok right, missed this in the outfit image stuff deletion, get rid of the code and library we were using to push those images up to S3!
2023-08-02 13:07:29 -07:00
Matchu
264ea37e1a Delete WardrobeTip model
lmao I have zero recollection of this, I've been generally trying to avoid too-far-off-the-path cleanup, but this one just seems silly, goodbye
2023-08-02 13:05:30 -07:00
Matchu
b8559f33cb Clarify image path methods for SwfAsset
Using `s3_path` and stuff made it sound like we were still referencing the original Amazon S3 images - but actually our new asset proxy just uses the same path structure, and we didn't change anything about it.

Oh also I deleted an after_conversion method that isn't used anymore, forgot about that!
2023-08-02 13:00:44 -07:00
Matchu
225f784732 Remove outfit image saving
This has already been moved to Impress 2020 too, so we can delete all the image generation and saving!
2023-08-02 12:51:10 -07:00
Matchu
9de50deb3c Remove SWF conversion
We've already swapped out the backend for this stuff to Impress 2020, so the resque task and the broken image report UI aren't actually relevant anymore. Delete them!

This helps us delete Resque soon too.
2023-08-02 12:43:45 -07:00
Matchu
2de9e9f45a Stop caching trade users on item page
Idk this one might actually be a bit of a pain to load? But I'd want to optimize it differently anyway, and there's overhauls we're already planning to do here.
2023-08-02 12:29:34 -07:00
Matchu
caa0859a2d Stop caching pet type images on item page
That's easy queries and easy templates!
2023-08-02 12:22:39 -07:00
Matchu
99910aff6a Stop caching item page contributors
This lets us remove the contribution observer too!
2023-08-02 12:10:38 -07:00
Matchu
c9e00f1d7c Stop caching latest contribution
That's another tiny query that I'm okay with just removing the cache overhead complexity for right now!
2023-08-02 12:04:09 -07:00
Matchu
596c2a1320 Remove unused "outfits#new newest_items" cache
Huh! This cache key seemed to only be referenced in checks and expirations, but was never actually used! So I guess we've been loading the modeling predictions every time for a while huh??

We'll get smarter about that someday, but anyway, that lets us delete our Item resque tasks and ItemObserver!
2023-08-02 12:02:19 -07:00
Matchu
e9c16891c8 Remove newest_items caching from items page
Yeah I'm very unconvinced of the merit of saving us one items/translations query lmao
2023-08-02 11:47:03 -07:00
Matchu
3ea22e6977 Remove as_json item caching
Again I'm just not convinced of the perf on this, and it enables us to delete some whole infra over it, we can improve it another time if it's useful to!
2023-08-02 11:41:19 -07:00
Matchu
beb5c14d42 Simplify item page rendering
Just removing some caching and the expiration of it! There's still more superfluous(?) caching on the item page to audit, but these seem a bit more sensible about avoiding loading extra data.
2023-08-02 11:38:10 -07:00
Matchu
263670a013 Simplify item_link rendering
In the interest of clearing out Resque, I'm just gonna remove a lot of our more complex caching stuff, and we can do a perf pass for things like big item list pages once everything's upgraded. (I'm hopeful that the upgrades themselves improve perf; and if not, that some improved sensibilities 10 years later can find simpler approaches.)
2023-08-02 11:34:27 -07:00
Matchu
8c5335f018 Oops, remove some remaining references to Flex
We uninstalled Flex, our Elasticsearch gem, to replace item search with direct DB queries; but I forgot these calls, oops!

I also kinda want to see about deleting the resque tasks altogether, since I'm not sure how to get Resque installed on latest rails bc there seems to be a conflict over the version of Rack? And it'd be nice to get rid of the complexity if we can.
2023-08-02 11:18:37 -07:00
Matchu
47c7b6329f Reimplement Advanced Search
Oh I uhhh flat out forgot about this LMAO

well it's back now!! and was pleasantly easy to build, following the `from_text` example & abstractions
2023-07-29 13:14:23 -07:00
Matchu
578c59ce04 Oops, fix ambiguous zones_restrict column
When combining occupies and restricts filters, this wouldn't be sure whether to apply to the items or the swf assets.
2023-07-29 13:11:53 -07:00
Matchu
bc5241d087 Oops, add unowned & unwanted support to search!
Uhhh idk how I messed this up, but right, wanting is not the opposite of owning, LOL!
2023-07-29 13:10:18 -07:00
Matchu
f3aef18e27 Convert has_many conditions to where block
Looks like `conditions` was removed in this version! This broke outfit saving. Now it's fixed!
2023-07-29 12:13:58 -07:00
Matchu
69c98ec35e Use all instead of scoped
Back in the day, `all` would immediately load up a query into an array, but now I think it's an alias for what `scoped` used to be: a relation that contains everything.
2023-07-29 12:06:26 -07:00
Matchu
df629368d3 Rename ClosetList.public -> publicly_visible
This removes a conflict with a new Rails method `.public` on the model!
2023-07-29 11:55:26 -07:00
Matchu
d1fbc1b178 Use strong parameters for ClosetHanger 2023-07-29 11:25:25 -07:00
Matchu
a2bd538bb4 Use strong parameters for ClosetList 2023-07-29 11:22:15 -07:00
Matchu
32b1608346 Drop NewsPosts model
We never ended up really using this lol, and it has an attr_accessible I want to be rid of so let's just fully trash it while we're at it!
2023-07-29 11:19:37 -07:00
Matchu
59580ab47b Use strong parameters for User 2023-07-29 11:07:14 -07:00
Matchu
4250e009d7 Use strong parameters for Outfit 2023-07-29 10:52:23 -07:00
Matchu
39a722600c Use strong parameters for Donation 2023-07-29 10:29:09 -07:00
Matchu
abf08bb7e7 Delete attr_accessible from Campaign
idk what these were even doing here, I never built a UI to edit campaigns?
2023-07-29 10:18:42 -07:00
Matchu
a0de57bed9 Backfill globalize's find_by_name method
This method was removed in globalize 4, which we upgraded to for compatibility with Rails 4! Let's add back in a similar thing for now!
2023-07-28 15:33:46 -07:00
Matchu
ca6a573c0a Add user:owns/wants back to item search
Not so bad, using a condition on `has_many` `through` was a cute trick!!
2023-07-28 15:06:33 -07:00
Matchu
070599e2ca Add fits and not_fits back to item search
Some fun stuff here to figure out how to API this out well, but I'm pretty pleased with where it ended up!
2023-07-28 14:45:10 -07:00
Matchu
4ac1304c74 Improve not_occupied solution
Not being a subquery is better! I realized later that a LEFT JOIN would probably do it even betterer? with like `HAVING count(x) = 0`? but the `left_outer_joins` method doesn't seem to be in Rails 4, and I don't want to do stringy joins, so this is fine for now!
2023-07-28 14:10:13 -07:00
Matchu
ab015db461 Oops, fix not_occupies logic error
Right, previously we were querying "has *at least one asset* that is not in zone X" instead of "has NO assets that are in zone X".

I don't know a fast way to query for that, this will have to do for now!
2023-07-26 13:18:19 -07:00
Matchu
5c119abcd8 Add restricts filter back to item search 2023-07-26 12:41:37 -07:00
Matchu
db9e3dfb53 Add occupies filter back to item search
Mostly adapting what was already there!
2023-07-26 12:28:25 -07:00
Matchu
da508ab33a Use arel for item translation joins
Just a bit defensive so we aren't setting up the possibility of an ambiguous query someday!
2023-07-26 11:58:05 -07:00
Matchu
d12b21896c Add is:pb back to item search 2023-07-26 11:51:52 -07:00
Matchu
4d722dd5c5 Simplify filter API a bit
Not doing the tricks with `is_positive` anymore, instead just calling different functions altogether at the call site.

Also, instead of classes, I feel like this is a lot more concise to just write as class methods that create certain instances of a trivial `Filter` data class. Without the tricks of `is_positive` in play, the value of classes goes way down imo.
2023-07-26 11:47:00 -07:00
Matchu
2ac806333d Move Item name search logic to model scope 2023-07-26 11:15:35 -07:00
Matchu
c04bab55d0 Improve is:X failure message 2023-07-26 11:06:36 -07:00
Matchu
20bedf8f59 Start building new item search
Just name field right now, more to come! A lot deleted lol
2023-07-22 19:01:40 -07:00
Matchu
f997513e87 Update to new scope syntax
Ohh ok, without this change all of our `scope`s were just immediately evaluating the argument and fetching _all_ such matching records immediately, instead of waiting to actually be called. This led to bugs like `pet_type.as_json` returning ALL pet states in the whole db, because the `PetState.emotion_order` scope was being treated as a single predefined query, rather than a query fragment to merge into the current context.

This also explains what happened in 724ed83: that's why things before the scope in the query were being ignored.
2023-07-22 14:04:01 -07:00