# |
Aug 21st 2019, 15:14 |
ricksaccous |
hmmmm |
# |
Aug 21st 2019, 15:14 |
ricksaccous |
@btx you can test plugins within the main app, if it's in your plugins folder, if it's in vendor then yeah you would do it separately |
# |
Aug 21st 2019, 15:14 |
daniel.upshaw |
Ahh |
# |
Aug 21st 2019, 15:12 |
admad |
@daniel.upshaw yeah that feature is a PITA |
# |
Aug 21st 2019, 15:11 |
btx |
the book just directs you to regular App tests which assume cake is already installed |
# |
Aug 21st 2019, 15:10 |
btx |
n00b question, but how should I be properly testing plugins? create a new Cake app, drop the plugin in, and then do the tests? |
# |
Aug 21st 2019, 15:09 |
daniel.upshaw |
By disabling the Routing cache |
# |
Aug 21st 2019, 15:09 |
daniel.upshaw |
Interestingly, if I change `->add(new RoutingMiddleware($this, '_cake_routes_'));` to `->add(new RoutingMiddleware($this, null));` it works |
# |
Aug 21st 2019, 15:08 |
alexdd55976 |
just put the files in the right folder. more packagemanager > chances to mess stuff up |
# |
Aug 21st 2019, 15:07 |
daniel.upshaw |
``` * Cache: Routes are cached to improve performance, check the RoutingMiddleware * constructor in your `src/Application.php` file to change this behavior.``` |
# |
Aug 21st 2019, 15:07 |
alexdd55976 |
you do not want to do that. |
# |
Aug 21st 2019, 15:05 |
daniel.upshaw |
And `bower` is a JS dependency |
# |
Aug 21st 2019, 15:05 |
admad |
Don't use composer for fronted libs |
# |
Aug 21st 2019, 15:05 |
daniel.upshaw |
You will need to `npm install` your JavaScript dependencies |
# |
Aug 21st 2019, 15:05 |
daniel.upshaw |
Does that make sense? |
# |
Aug 21st 2019, 15:04 |
daniel.upshaw |
NPM is for JavaScript/CSS etc, Composer is for PHP |
# |
Aug 21st 2019, 15:04 |
slackebot |
install of `npm` and thus no `bower`. Sorry for all the questions all at once, I figured I should put everything together. |
# |
Aug 21st 2019, 15:04 |
slackebot |
Cake directory structure. A lot of this has me thinking I should either be using `npm` exclusively for frontend management or return to `bower`. In my original setup, I loaded frontend dependencies using `bower`, got the `dist` files in the correct `webroot` subfolders with custom paths in the `bower.json` file and then committed those frontend dependencies to the repo - effectively freezing them (this was mostly because our server doesn’t allow the |
# |
Aug 21st 2019, 15:04 |
slackebot |
using Composer to bring the frontend libraries into the project, do I still need to use `npm install` to get the `dist` files into the right directories? If I still need to use `npm`, what is the benefit of using Composer? Does using `npn install` actually bring them into the Cake projects `webroot` directory? It seems this functionality is dictated by some additional information in the libraries `package.json` file, which wouldn’t be specific to a |
# |
Aug 21st 2019, 15:04 |
mdotobie |
I know this isn’t a CakePHP-specific question but since it is my framework of choice, I figured I’d ask this here. From everything I’ve been doing, it’s possible to bring frontend libraries into my Cake project using composer. I seemed to be under the impression that it was doing its internal magic to link those frontend libraries into my `webroot` folder - but a recent bug seems to indicant that this isn’t the case. My question is |
# |
Aug 21st 2019, 15:04 |
daniel.upshaw |
Fair :slightly_smiling_face: Thanks for the tip |
# |
Aug 21st 2019, 15:04 |
admad |
Unnecessary double caching could actually be detrimental, cache reads aren't exactly free either :slightly_smiling_face: |
# |
Aug 21st 2019, 15:03 |
daniel.upshaw |
Seems indicative of a bug, yes? |
# |
Aug 21st 2019, 15:03 |
daniel.upshaw |
So strange that it only happens on the first page loa |
# |
Aug 21st 2019, 15:01 |
daniel.upshaw |
I just wanted it to be speedy on all fronts |
# |
Aug 21st 2019, 15:01 |
daniel.upshaw |
Right, I tried removing that |
# |
Aug 21st 2019, 15:01 |
admad |
Why cache the query when you are already caching imploded results |
# |
Aug 21st 2019, 15:01 |
daniel.upshaw |
If I hard code the string, it works fine |
# |
Aug 21st 2019, 15:00 |
daniel.upshaw |
I'm not sure if it would make a difference, but it's in my `routes.php`, so aside from potential best practices I don't see how that could make a technical difference? |
# |
Aug 21st 2019, 14:59 |
daniel.upshaw |
So strange |
# |
Aug 21st 2019, 14:58 |
daniel.upshaw |
Much cleaner without the `new Collection` though! |
# |
Aug 21st 2019, 14:58 |
slackebot |
); });``` |
# |
Aug 21st 2019, 14:58 |
daniel.upshaw |
Hrm, oddly this still errs: ```$tagRoutesPiped = Cache::remember('tagRoutesPiped', function () { return (string)implode( '|', TableRegistry::getTableLocator() ->get('Tags') ->find('all') ->select(['alias']) ->where(['route' => 1]) ->cache('tagRoutes') ->all() ->extract('alias')->toArray() |
# |
Aug 21st 2019, 14:57 |
admad |
so `->cache()->all()->extract()->toArray()` |
# |
Aug 21st 2019, 14:56 |
daniel.upshaw |
That's really cool, I did not know that |
# |
Aug 21st 2019, 14:56 |
daniel.upshaw |
Oh awesome!!! |
# |
Aug 21st 2019, 14:56 |
admad |
btw resutlsets are also collections so creating a new collection is unnecessary |
# |
Aug 21st 2019, 14:56 |
slackebot |
->where(['route' => 1]) ->toArray() ))->extract('alias')->toArray() ); });``` |
# |
Aug 21st 2019, 14:56 |
slackebot |
->cache('tagRoutes') ->toArray() ))->extract('alias')->toArray() ); });``` ``` $tagRoutesPiped = Cache::remember('tagRoutesPiped', function () { return (string)implode( '|', (new Collection( TableRegistry::getTableLocator() ->get('Tags') ->find('all') ->select(['alias']) |
# |
Aug 21st 2019, 14:56 |
daniel.upshaw |
It's a great call.... though still error with both of these: ``` $tagRoutesPiped = Cache::remember('tagRoutesPiped', function () { return (string)implode( '|', (new Collection( TableRegistry::getTableLocator() ->get('Tags') ->find('all') ->select(['alias']) ->where(['route' => 1]) |
# |
Aug 21st 2019, 14:55 |
admad |
that will cause the query to be actually run and not give you the pdo serialization error |