加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 从Rails 3.2到Cake PHP 2.0.如何做一些Rails的

发布时间:2020-12-16 19:39:01 所属栏目:百科 来源:网络整理
导读:我的意图不是进行比较或讨论哪个框架更好.我知道来自Cake PHP和Rails的力量.我相信有两种方法可以做类似的事情. 所以,这是这样的情况:在Rails框架中,我习惯于做一些我想在CakePHP上做的事情(其中一些在文档中没有找到). 他们是: 套餐管理 在Rails中,我有“
我的意图不是进行比较或讨论哪个框架更好.我知道来自Cake PHP和Rails的力量.我相信有两种方法可以做类似的事情.

所以,这是这样的情况:在Rails框架中,我习惯于做一些我想在CakePHP上做的事情(其中一些在文档中没有找到).

他们是:

套餐管理

在Rails中,我有“Gemfile”文件,其中我写了应用程序中使用的每个“gem”的版本.如果我想升级或降级,我更改版本并运行“捆绑更新”命令.你如何更新插件?您是否使用GIT这样的工具来检查每个新版本?

迁移

当我需要更改数据库时,我通过控制台命令“rails generate migration”创建一个空的“迁移”文件.然后,在生成的文件中,我添加更改,如“rename_column:users,:address,:location”.之后,我运行“rake db:migrate”,并迁移数据库.如何在CakePHP上这样做?

自动部署

使用“Capistrano”红宝石宝石可以自动使用Rails中的部署.基本上,我在命令行中运行“cap production deployment”.然后,根据“deploy.rb”文件中的说明,它登录服务器,从git存储库中克隆最新版本的代码,并备份当前版本,以便我可以回滚.它还可以为“共享”文件夹(如用户上传)创建符号链接,重新编译资源,运行挂起的迁移,安装新的依赖关系,重新启动一些服务器进程,重新启动应用程序本身,并可以执行其他命令行任务.在CakePHP上有什么类似的东西吗?

资产压缩

在Rails中,当我处于生产模式时,CSS和JS资产将自动编译为单个文件,并在每次部署后重新生成.这是Rails 3.1中的本机功能.是否可以在CakePHP上?

工人和背景工作

Rails可以使用一个名为“delayed_job”的gem来排列在后台由“worker”执行的任务,比如在用户注册后发送电子邮件.你如何做到这一点?

控制器命名空间

如果我想创建管理界面或Web服务(例如使用“api”命名空间)或“移动”命名空间,我只需在“controllers”文件夹中创建相应的文件夹.然后,我把控制器放在那里,创建路径来访问它们.在蛋糕上做最好的方法是什么?

从视图访问模型方法

当我从数据库中获取数据时,CakePHP似乎返回一个关联数组,而不是真正的“对象”.所以,我无法访问模型的方法.
假设我的UserModel类提供了一个名为“age”的方法,根据他的生日计算用户当前的年龄.在Rails中,我可以在视图中执行此操作:<%= @ user.age%&gt ;.我需要在Cake上创建一个视图助手?像calc_user_age($user); ?> (或类似的东西) ?
另一种情况:假设我想从用户那里得到最后的评论,并且在评论中,使用帖子标题插入相关帖子的链接.
在Rails中,我会做一些像@ user.comments.last.post.title这样的东西来获得帖子标题.如何在Cake中做到这一点,而不用使用那些获得大量不必要的数据的“recursive = 3”功能呢?

链模型范围

假设我有一个叫做Post的模型.在Rails中,我可以在模型上创建范围,并按照我想要的方式进行混合.
如果我想得到“5个最近发布的帖子从类别编程按最常访问排序”,例如,我将这样称呼:“Post.published.from_category(”programming“).most_accessed.limit(5 )”.
如果我只想要最近订购的草稿帖,整合分页,我会称之为“Post.drafts.recent.page(2)”.
在CakePHP上创建和链接范围的最佳方式是什么?动态构建一个条件数组,并将其作为“查找”参数发送.

测试

CakePHP社区采用什么测试工具?我需要测试模型和方法,测试控制器及其响应和变量,并测试视图内容(也就是Javascript交互),创建灯具等.我也知道是否有办法创建像autotest,在文件保存后运行测试.

那么基本上这些都是要点.对于长篇文章,对于我的错误和冗余的英语(我不是母语的人),很抱歉.另外,我不是专家.所以我可以在这里写一些错误的东西.

希望我们能有一个很好的对话.谢谢!

解决方法

套餐管理

AFAIK没有最新和广泛使用的软件包管理器.通常我们使用git添加插件.插件相当于RoR中的宝石我认为.

编辑:现在有了composer,现在由CakePHP和很多插件使用.

迁移

使用CakeDC migrations plugin或build in schema shell.

自动部署

我们使用fabric. Afaik没有我会知道的蛋糕插件.

资产压缩

Use this plugin.

控制器命名空间

简单的把它们放到控制器文件夹和use the Router中为它们创建路由.和Rails一样的描述.

从视图访问模型方法

嗯?你在Rails中这样做?我不喜欢在CakePHP中,您不应该这样做,IMO不会在任何MVC应用程序中.

在控制器的视图中设置所需的数据.

$this->set('data',$this->Model->yourMethod());

工人与后台工作

这可以在writing shells完成.

链模型

CakePHP中的链接模型是通过associations完成的.是的,他们可以像$this-> User-> Post-> find(‘first’)这样可访问.您还可以在多个表中构建complex find queries和条件.

测试

CakePHP正在使用phpunit进行单元测试.在CakePHP书中阅读this section.

我的建议

阅读这本书:book.cakephp.org一定会回答你的大部分问题,告诉你如何做思考. 2.0版本的文档质量非常好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读