手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表全部文章

laravel的 macroable

 其实有点不想写这个的,但想想还是提一嘴吧,主要是用了这玩意之后,在 phpstorm 下面,不配合 laravel idea 的话,根本起不到太大的作用。安装了 laravel idea 之后。再 generate helper code 后。就可以当成正常的方法用了(当然,即使这么用了,带来的另一个问题就是。。refactor 的时候,不会受影响,毕竟这其实就是数组的一个 key)

 
macroable 的适用场景,官方介绍的更多是象 str / arr /collection 的扩展。而且 macroable 有点象是 trait。给现有类注入一个方法(这点在 yii中其实早就有了。不过macroable 也属于很早的框架,只是叫法不一样罢了。 )
 
macroable 的 mixin 方法,估计很多人很熟悉,是的,vue2的时候 ,也是这样来注入新的方法的。
 
除此之外,我们可能有时候 还会在 Model / Cache 里加入自己的用法。比如标准的 Model,肯定没有 pinyin 这样的方法, 比如我要将标题转为拼音当成 slug 来用,有几种办法:
1、直接写个方法 title2pinyin( $title )
2、在 Post 类里增加一个方法 getPinyinAttribute,返回拼音(如果有多个 Model 里有类似的要求,那要么把这个方法写成 trait,要么一个个复制)
3、Post::macro('pinyin',function(){ return .... 拼音 })

类似这几种方法,不能说孰优孰劣,但如果和 model 相关的操作是被项目的人封装成 composer 的类时,也就1和3可以用了。
 
说实话,要想好好用这个方法,并且形成优势。有时候还真不知道或者真没感觉倒,但这毕竟也能算是曲线救国。想想,如果在 cache 里用。可以 cache()->get('name')->toPinyin(),感觉也还不错。
 

第一次 node 编译前端项目到内存不够

在编译前端项目的时候报错:FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

 
真的是第一次遇到,PHP 就不会出现这种问题,哈哈
内存还是小了点。然后估计我还是要清理和合并掉一些包,不然在小内存(1G)的机器上估计还会有问题。
 
小内存的机器看来可以利用 git 的 action,在编译好之后把构建复制过去,也是个办法。

mac下ruby 安装 mysql2真是一堆坑

直接 gem install mysql2报错。确实很烦人,因为我 mysql 本身本机没有,所以就不太可能安装 mysql-client 之类的。于是安装了 mysql-client。但还是报错。无法编译。

看网上的文章是安装 mariadb,然后指定 mysql-config 就 OK 了。我已经懒得弄了。。。。。
 
你看 postgresql 多方便,安装失败的时候 ,提示你 brew install libpq,就行了(确实是在我 install libpq 后,gem 就走完了)
 
真不知道那些本地没有 mysql 的人是怎么忍受得了 mysql2这样的库的(也可能只是我受不了吧)
 
---
问了一下 gpt,他说我安装好 mysql-client 后,还要指定一下:
export LDFLAGS="-L/usr/local/opt/mysql-client/lib"
export CPPFLAGS="-I/usr/local/opt/mysql-client/include"
然后再运行就 OK 了。于是我又重新 retry 了一下。但还是失败了
--
如果要成功就参考这个吧:https://medium.com/@0x88/%E5%9C%A8-macos-%E7%84%A1%E7%97%9B%E5%AE%89%E8%A3%9D-ruby-mysql2-gem-apple-m1-intel-mac-%E9%81%A9%E7%94%A8-330f996ae3c7,我是不想再试了。要么 sqlite ,要么 pgsql 吧

Tags: ruby, mysql, postgresql

rails配置 hot-reload

 Rails 在进行开发的时候 ,默认没有 hotreload。当然其实 laravel 也没有,但 laravl 因为用了 vite,所以其实是可以使用 vite 的 hot reload 的功能。vite 里还有 laravel 的插件,直接就支持了。

 
rails 里如何配置呢?其实也很简单,在 Gemfile 中的 group :development 中增加 `gem "hotwire-livereload"`,然后 bundle install 就OK 了。
当然这只是先添加了 hotwire 的库,还需要运行 rails livereload:install,会在 application.html.erb 的header 头中增相应的 js引用
同时还修改了 config/cable.yml,增加了 redis 的相关引用。
 
这就意味着,原来没有使用 redis 的。你需要安装一下 redis 才 OK,配置完后,再打开模板进行修改保存后,会发现页面确实刷新了。
 
步骤简化成:
1、add hotwire-livereload
```
group :development do
  gem "hotwire-livereload"
end
```
2、bundle install (这里面要注意如果你注释了默认的 source,可能会失败,指定一下 source 即可,如果镜像的 source 不能下载,设置为 rubygems.org 即可)
3、rails livereload:install
4、rails server (如果有报错,可以看一下原因:可能的原因是:a. redis server 不存在 b.redis-server 不能连接)
 
 

Tags: ruby, rails

用 laravel11 + Filament 来尝试写博客 (一)

 Laravel 官方在推上说即将推出 Laravel11,这次的推出的版本将以极致的精简,而且去掉了很多原来为了结构而分拆的文件。象 Console/Http 下的 Kernel 文件,全部去掉,而且改 bootstrap/app.php 来实现了,在路由里甚至留了一下 health 。用于其他监控项目来检查服务器是否正常。默认是:http://{hostname}/up,我在本地运行下来,执行时间是39ms,所以我就更加想尝试用11来把我当前的博客重写一下(之前写的时候 ,都是考虑直接使用原来的数据库结构,导致写了几次都发现很不 laravel,所以几次就放弃了)

 
Filament,是一个后台管理项目,基于 livewire 的(关于 livewire,可以查看 https://livewire.laravel.com ),号称是不用写 JS 的后台管理。之所以选择这个,是本来几年前用的是 dcat-admin,然而作者也已经好多年没更新了(这就是使用第三方开源项目的尴尬之处,作者也不太可能用爱发电,如果项目没有赢利或者找不到赢利点,这个项目很可能就无疾而终了)。而选择 filament 也是因为看中了他的生态,有完善的插件平台(有免费和付费插件)。一旦有人购买插件,会促使更多的人使用并扩展(搜了一下,其实有不少类似的,象:splade.dev / tomatophp / nova[官方] ),但目前看下来,好象还在持续更新的就是 filament 了。在推上也能看到 filament 挺活跃。所以选择它做为接下来3年的后台管理。
 
今天就先到这里先介绍一下这两个项目,然后准备开始写,遇到踩坑的地方也会记录一下。
项目开始其实很方便
laravel new blog,就可以初始化项目了。因为考虑到其实暂时不需要前台登录,所以没有用 breeze 和 jetstream。
项目初始化后,运行 composer require filament/filament 就可以安装好filament 了
这时候还要运行 php artisan filament:install --panels。安装完面板后,可以通过安装时指定的路由进行访问(默认是 admin,可以在运行的时候 进行设置)【备注:后期要修改的话,可以在 app/Providers/Filament/AdminPanelProvider.php 中进行调整】
但此时还不能登录,因为没有 breeze 和 jetstream ,所以连注册也没有,此时只能通过 php artisan make:filament-user 来新建一个用户。
此时,filament就已经安装完了。项目正式启动。

 

Tags: laravel, filament

Records:309912345678910»