Maikel Linke 0da7c93bc6 Collect affected exchanges more efficiently
When an incoming exchange of an order cycle changes, the ProductsCache
queries all affected outgoing exchanges to update them. It was creating
a big collection of exchanges with duplicates and then calling `uniq`.
That call was hitting a custom implementation of `eql?` which is very
inefficient. And since `Exchange.eql?` is ignoring the order cycle id,
it was probably filtering too many exchanges from the collection.

Fixed bug: If two order cycles sell exactly the same variants to the
same shop, the two outgoing exchanges are seen as equal. When the
variants change, ProductsCache would only update one of those two
exchanges, leaving one order cycle out of sync. This case is very rare.
It only happens if there is a shop with two active order cycles selling
exactly the same.

The new uniqueness test looks only at the attributes that are later used
to refresh the cache. I measured a page speed improvement from 90
seconds to 3 seconds (30 times faster).
2019-07-02 18:29:50 +10:00
2019-02-27 10:41:39 +11:00
2015-12-24 11:44:12 +11:00
2012-03-27 10:10:26 +11:00
2019-02-26 19:36:44 +00:00
2019-04-12 13:57:50 +08:00
2015-01-09 15:30:49 +11:00
2019-07-02 18:29:49 +10:00
2015-11-05 11:09:22 +11:00
2016-02-09 06:11:13 +00:00
2019-06-18 10:49:20 +01:00
2012-12-18 15:56:54 +11:00
2019-06-13 18:58:58 +02:00

Build Status Code Climate View performance data on Skylight

Open Food Network

The Open Food Network is an online marketplace for local food. It enables a network of independent online food stores that connect farmers and food hubs (including coops, online farmers' markets, independent food businesses etc); with individuals and local businesses. It gives farmers and food hubs an easier and fairer way to distribute their food.

Supported by the Open Food Foundation and a network of global affiliates, we are proudly open source and not-for-profit - we're trying to seriously disrupt the concentration of power in global agri-food systems, and we need as many smart people working together on this as possible.

We're part of global movement - get involved!

Contributing

If you are interested in contributing to the OFN in any capacity, please introducing yourself on Slack, and have a look through our Contributor Guide

Our GETTING_STARTED and CONTRIBUTING guides are the best place to start for developers looking to set up a development environment and make contributions to the codebase.

Provisioning

If you're interested in provisioning a server, see ofn-install for the project's Ansible playbooks.

We also have a Super Admin Guide to help with configuration of new servers.

Testing

We use BrowserStack as a manual testing tool. BrowserStack provides open source projects with unlimited and free of charge accounts. A big thanks to them!

Licence

Copyright (c) 2012 - 2019 Open Food Foundation, released under the AGPL licence.

Description
Connect suppliers, distributors and consumers to trade local produce.
Readme 157 MiB
Languages
Ruby 74.7%
Haml 9.4%
CoffeeScript 7.3%
SCSS 4.5%
JavaScript 3.6%
Other 0.4%