ruby-on-rails – 从Rails 3.2到Cake PHP 2.0.如何做一些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似乎返回一个关联数组,而不是真正的“对象”.所以,我无法访问模型的方法. 链模型范围 假设我有一个叫做Post的模型.在Rails中,我可以在模型上创建范围,并按照我想要的方式进行混合. 测试 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版本的文档质量非常好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |