首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

架构之美:教你如何分析一个接口?

任一项目中,接口都很多,理解接口就是一个个读接口源码? 相信没有人能把所有接口细节记住, 如何才能理清繁杂的接口呢? 找主线,看风格。...这一讲,我们就来一起来学习怎样看接口,我选择的项目是Ruby on Rails,因为它的接口设计风格是带给我最多震撼的,无论是编程接口的优雅,还是开发过程接口的顺畅。 看设计要先看模型。...接下来,我们就一个个地深入其中,了解它们的风格,以及它们给行业带来的不同思考。 REST 接口 先说应用对外暴露的接口:REST API。...Article.find_by_title_and_author("foo", "bar") 从功能的角度说,这样的查询在功能上是完全一样的,但显然Rails程序员Java程序员的工作量是天差地别的,...写程序库写应用虽然都是写代码,但二者的要求确实相差极大。把细节暴露给所有人,显然是一个增加犯错几率的事情。 Rails的API接口让人们开始关注API的表达性。

2.1K20

不要让框架控制你的项目,过度依赖框架会害了你

第三种危害是,框架的使用导致我们需要付出额外的努力,但这部分工作并不能为客户提供价值,比如框架升级、弃用、教育信息摄入(例如学习新功能)等。...为了让项目使用最新版本的Rails,你需要更新或移植框架,但这些工作都需要资源。 再者,即便眼下框架与你的目标完全一致,但将来呢?尤其是对于刚刚启动的项目来说,谁又能预知未来呢?...当我们的领域业务逻辑与框架代码混在一起;当高级业务概念与底层的架构机制混在一起;当业务逻辑混入底层架构,我们必须阅读控制器、视图、模型、工厂、服务、配置文件、库、框架代码,才能搞明白为什么案例A中创建了...关键不是永远不要使用框架,而是要隔离它们,并统一从一个地方调用。将框架的影响范围降到最低,这是我们的责任。 然而,大多数框架预先定制了很多技术细节,并且都混合在一起。因此,我们很难将它们分开。...最后,维护工作的难易程度与使用特定的工具或框架无关。正如Symfony指出的那样: 最佳实践可以保证应用程序的稳定性、可维护性可升级性。 而“最佳实践”之一就是不要让框架控制你的项目!

72730
您找到你想要的搜索结果了吗?
是的
没有找到

如何在CentOS 6.5上使用 Nginx+Passenger 部署Railes应用程序

该过程需要用到Phusion Passenger应用服务器,该服务器以其简单性出色的功能著称,并与前面运行的Nginx HTTP服务器一起处理管理连接。...当然只有一个人可以完成这项工作,但可能不是很好,因为它们并不适合所有目的。 在本教程中,我们将使用Phusion Passenger作为应用程序服务器。...为了简化操作而不是手动安装它们,我们将为YUM其他包管理器添加EPEL软件存储库以供使用。...由于Rails首先需要一个JavaScript解释器才能工作,我们还需要设置Node.js. 为此,我们将使用默认的系统包管理器YUM。...创建示例应用程序/上传源代码 让我们首先在我们的主目录中创建一个非常基本的Rails应用程序,以便与PassengerNginx一起使用。

4.9K20

DHH:2017年Rails 框架还值得学习

他们只是从各种库里找到自己的工具, 把它们组装起来, 从未满意过. Rails 的核心原则非常独特, 虽然也一直有争议, 那就是约定大于配置....我已经在其他地方进一步详细阐述了在Rails 核心原则中关于配置的约定方法, 以及点菜 / omakase冲突的说明, 集成系统的吸引力以及 Rails 社区的其他核心价值....笔者注: 可以到 DHH 博客里了解一二. 如果读过这些资料之后, 你应该能准确判断出 Rails 是否适合你了....当人们听到 “web 框架”, 有时他们会想, “哦, 那只是一些生成 HTML 的东西, 是?”. 在这种看法下, 有的开发者可能认为这跟 React 之类前端框架是竞争关系....虽然 Rails 默认是全栈包括 HTML 端渲染, 并且我们缺省提供了 Turbolinks SJR 供大家选择, 但如果这条路不那么有吸引力, 也可以很容易进行替换.

1.9K90

如何在CentOS 6.5上使用UnicornNginx部署Rails应用程序

这种真实的部署设置与使用单一开发服务器有很大不同,后者设计用于测试目的,因为由于缺乏功能特性,它们无法在实际网站流量的负载下工作。...Unicorn是一个卓越的应用服务器,它包含你的Rails应用程序来处理传入的请求,最好是在它们被前端HTTP服务器(如Nginx)过滤发送之后。...要安装它们,请运行以下命令: yum install -y curl-devel nano sqlite-devel libyaml-devel 设置Ruby环境Rails 我们将使用Ruby Version...创建示例应用程序 让我们首先在我们的主目录中创建一个非常基本的Rails应用程序,以便与Unicorn一起服务。...为此,您可以使用SFTP或图形工具(如FileZilla)安全地传输管理远程文件。同样,您可以使用GitGithub等中央存储库来下载设置代码。

4.1K20

Rails存储库从SVN转向Git

在版本存储库迁移的同时,我们也会将问题跟踪系统转移到基于Rails开发的Lighthouse应用之上,于是到目前为止,我们的存储库问题跟踪系统都是使用的Rails应用,这对我们是一个很好的鼓励。...这两个系统都会保留较长一段时 间,但是我们并不建议使用者再去访问它们。这意味着我们的Subversion存储库依然可以访问,但是如果你想获得最新的代码,需要在新的Git存储库 上更新。...Scott认为,了解Git是如何工作的,对于正确的使用Git有着积极的意义。...Git的绝大部分操作都在本地完成,不用集中的SCM服务器交互,使用者可以放心的随时随地提交代码。...除此之外,分支之间合并时,不仅代码会 合并在一起,Check In的历史也会保留下来。

1.3K90

如何在Ubuntu 18.04上使用RVM安装Ruby on Rails

RVM将允许您管理使用多个Ruby环境,并允许您在它们之间切换。项目存储库位于git存储库中。...本教程将指导您完成RubyRails安装过程并通过RVM进行设置 课程准备 本教程将通过RVM引导您完成Ruby on Rails安装过程。...安装特定的RubyRails版本 如果您需要为您的应用程序安装特定版本的Ruby,而不仅仅是最新版本的Ruby,则可以使用RVM。...结论 我们已经介绍了如何在这里安装RVMRuby on Rails的基础知识,以便您可以使用多个Ruby环境。...为了在Ruby on Rails应用程序中实现更多可伸缩性,集中化控制,您可能希望将它与PostgreSQL或MySQ一起使用,而不是使用默认的sqlite3数据库。

8.8K00

如何让服务器从30台缩减到2台的:从Ruby迁移到Go语言

我们过去是一个顾问公司,为其它公司开发应用,在当时有两个东西被炒得非常火:亚马逊的Web ServicesRuby on Rails。...我们都有多年的开发Java的经历,曾经写过很多东西只需要很少的资源就能处理大量负载,远比Ruby on Rails的处理能力强的多,我知道我们可以做出很多改进。...选择一种语言   我对任何新建议都持开放的态度,最不济,我还可以重回到Java。Java是一个在很多方面(比如性能上)很棒的语言(是?)...我们是首个公司公开的宣称在我们的产品中使用Go,首个公司在Go语言邮件列表里贴出Go语言工作职位招聘。很多顶级程序员希望来我们这里,就是因为这样他们可以在每日的编程中使用Go语言。   ...它们就像是根本没有被使用,完全就像没有任何程序在上面运行。我们的CPU使用率低于5%,整个应用的运行启动只消耗了几百KB的内存(仅在启动时),相比之下Rails应用要耗用50MB。

1.5K150

像一名教育者一样思考代码质量

1 了解你的受众 Rails工作中,我们使用 Rails、Node Vue。...但是,如果你工作在一个对 Rails 都是新手的团队中时,这些菜鸟绝对会陷入绝望沮丧中。 这就是需要像一名教育者一样思考的地方。假设你是一名教授。...同样,当有一些术语概念很难被人们理解时,慢慢介绍这些概念而不是完全避免使用这些概念可能更有意义,这样学生们就可以学习这些概念并在将来使用它们。...当我们编写代码时,这些工具对我们开发者还有使用意义? 其中一些是不适用的。例如,一个完整的教学视频。其它则是有点儿傻。例如,测验。但是,我认为至少有些工具是可以使用的。...我通常默认假定: 我注意到人们在工作中使用解释性注释,而我不会在那些场景中这样做,但我发现这些注释确实很有用; 这种“像教育者一样思考”的框架让我觉得它们很有价值。

72530

程序员播客(podcast)推荐

几个主要的主持人是牛掰的ruby on rails的程序猿。...我比较喜欢的几期 牛掰的程序员访谈 《深入浅出Node.js》作者朴灵一起聊聊Node.js 与Rails创始人DHH聊Rails 英文的,装逼一下~ 中国著名Common Lisp程序员冰河聊聊...鲁葳聊聊软件咨询公司是如何工作的 漂亮的女程序员~声音也好听 你应该知道的 Agile Scrum 跟天使湾聚变计划负责人王磊聊天使投资 是不是有很多干货 XD ps:不支持firefox的在线收听...It公论 「IT 公论」是由李如一、李楠 Rio 创办的科技类播客 (podcast) 节目 内核恐慌 类似IT公论,但更技术一点 IT 乱谈 你想了解大数据与云计算,你想知道3D...打印智能硬件,对百度、阿里、腾讯的乱战很有兴趣

2.7K30

JVM并不是那么重量级

它生成了一堆的PDF文件,然后将它们上传到iSign (现在已经不存在了)用于存储共享。iSign本身就是一个经典的Rails应用,它托管在3个AMI上。...我或多或少地关注了JRuby的发展成功的故事,并在Rubyfuza 2015与Charles Nutter一起度过了一段美好的时光。...这些问题可以让我们在考虑JVM时,帮助我们减少个人的情感障碍。这些情感偏见可能会让我们后面付出昂贵的代价,从长远的角度来看对我们不利。 所以,让我们来看看下面的内容。 前期成本真的很高?...通过这些小的增量步骤,可以将NodeRuby所需的真实的膨胀量隐藏起来。如果你停止并对其进行评估,不考虑花费的时间,你将会看到200MB的JVM效率更高。 ? JVM的运行很笨重?...与JVM的日常工作 我在我的的2012 MacBook Pro上运行了至少5个JVM进程,内存为8GB。我从来没有尝试过同时启动5个Rails应用程序。 为什么同时开启5个?

1.6K50

框架分析(6)-Ruby on Rails

框架分析(6)-Ruby on Rails 主要对目前市面上常见的框架进行分析总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步。...约定优于配置 Rails框架倡导“约定优于配置”的开发理念,通过一系列的约定规则,减少开发人员在配置方面的工作。...例如,Rails会根据命名规范自动映射URL路径到控制器动作,减少了手动配置路由的工作。...优缺点 优点 快速开发 Rails框架采用了“约定优于配置”的开发理念,通过一系列的约定规则,减少了开发人员在配置方面的工作。...这主要是由于Ruby语言本身的特性Rails框架的设计理念所致。然而,通过一些优化措施使用缓存技术,可以改善性能问题。

21420

rails, django, phoenix,你们错了

Phoenix Elixir 大抵也是如此。 在 django / phoenix 上能看得出 rails 的很多影子。...通过这些框架,工程师可以快速地创建一个 web 项目的脚手架,和数据库(一般是 RDBMS)绑定,生成 model,controller view,不消数日,一个可以运行部署的「网站」就攒出来了。...似乎也很优秀 —— 如果让你我从头写一套 web framework,决计赶不上它们的水平。 那它们错在哪里?...经典的 MVC 分层设计是一种纵向的解耦,数据有序流动,各层只管自己的工作,「上帝的归上帝,凯撒的归凯撒」,不必关心其他层次如何实现。...起初,这种解耦会带来很多工作量,但随着系统的发展,你会发现,这样设计会为系统的扩展可重用带来很多的好处。

1.8K70

《环球时报》专访Rails Girls :程序媛,女性力新战场

“近日,中国第二大英文报纸 Global Times(《环球时报》)对Rails Girls China的组织者文洋Rails Girls Beijing'5th workshop 的教练——来自ThoughtWorks...>>>>什么是Rails Girls? Rails Girls项目是一个免费的公益活动,该项目为女性提供为时1天的Web开发入门工作坊。...工作坊为女性提供工具,帮助她们更好地认识编程艺术,掌握Ruby on Rails技术,并在最快的时间内实施自己的想法。...Rails Girls项目起源于芬兰,到目前为止,Rails Girls 已经在全球很多国家成功地组织了工作坊。...Loic参加Rails Girls ▷▷连续多年世界多地Rails Girls的Partner 除了中国,ThoughtWorks在新加坡、巴西等多地与Rails Girls一起推广Rails Girls

93050

CDN 适合您的 Rails 应用程序?适合大规模应用

CDN 是分布在世界各地的服务器网络,用于存储网站静态资产的缓存版本,例如图像、JavaScript CSS 文件。...提高可用性 CDN 旨在处理大量流量,因此它们可以帮助确保您的网站在高需求期间保持可用。...提高安全性 许多 CDN 提供额外的安全功能,例如 DDoS 保护 SSL 证书,可以帮助保护您的网站免受攻击。 ---- 你应该在 Rails 中使用 CDN ?...---- 如何在 Rails 中使用 CDN 如果您决定在 Rails 7 应用程序中使用 CDN,您可以通过将 Web 服务器配置为从 CDN 服务器提供静态资产来实现。...但是,在做出决定之前考虑潜在的缺点(例如额外的复杂性成本)很重要。

13530

不要学习“网红”编程语言

但从 2016 年开始明显下跌后,它们的命运就基本已经注定了。不知道为什么 2020 年这里又有一次断崖式下降,这可能只是 Google 数据出了问题。但不管怎么说,状态不好是肯定的。...虽然 Java 基本上可以算是同时期(Java 诞生于 1993 年,正式发布于 1995 年),但在 2004 年 David Heinemeier Hansson 发布 Ruby on Rails...剩下的工作让 Ruby 完成就可以了。不过,为了建立你的试点项目,你首先需要创建一个案例,让 Ruby 看起来足够吸引眼球,从而让大家甘心冒这个风险。接着,你得在你的试点策略里面添筋加骨。...从 2000 年开始,到该时代中期,Ruby 受欢迎程度在 TIOBE 指数评级中逐渐达到顶峰,人们认为 Ruby 还有它的旗舰级 Rails 框架,可以大大提高生产力。...可以肯定地说,Rails 这类框架确实拥有比较明确的市场定位,但还不至于火到那个程度。

2.1K30

在Debian 9上使用Apache安装Ruby on Rails

什么是Ruby on Rails? Ruby on Rails是一个服务器端Web应用程序框架。它维护了一组策划组件“约定优于配置”的理念,使得我们可以快速开发应用程序而无需大量样板。...在你开始之前 熟悉我们的入门指南并完成设置Linode主机名时区的步骤。 本指南将尽可能使用sudo。完成“ 保护您的服务器 ”部分以创建标准用户帐户,加强SSH访问并删除不必要的网络服务。...Ruby将与Ruby Version Manager(RVM)一起安装,这使得在同一系统上轻松安装管理不同版本的Ruby。...使用Rubygems包管理器安装Rails: gem install rails --version=5.1.4 将您的Rails应用程序移动到您的Linode,或者如果您还没有应用程序,则创建一个新应用程序...您应该看到显示的默认Rails页面。 更多信息 有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

5.8K30

使用spring提高rails开发效率

###声明 目前spring只支持MRI 1.9.3, MRI 2.0.0, Rails 3.2,没有达到要求的人赶紧升级你们的ruby,rails版本吧 ###问题 想必采用TDD/BDD方式进行开发的...再回过头来想想,我享受这段pair的过程? pair很给力,很快就把一个taks实现成一个测试用例 桌子上的水果也很好吃。 。。。...做为一个有追求的程序员,我当然不愿意把宝贵的工作时间浪费在这无谓的等待中去 :-)。 ###现有方案 有追求的程序员还是大多数,google之后才发现已经有人尝试解决这个问题,如spork,zeus。...###安装 建议把spring安装到rvm的global gemset中去,这样就可以在多个project使用spring 安装命令非常简单: gem install spring ###使用 执行测试的命令也非常简单...###总结 spring把对项目代码的影响减少到了没有,并且能够去掉加载rails环境的时间,极大地提升rails开发者的效率,是现有rails开发者必不可少的利器。enjoy coding!!!

3.5K60

慢的不是 Ruby,而是你的数据库

垃圾收集器、JIT 编译器、其高度动态的特性、更改代码运行时的能力等等,所有这些加在一起,都使得 Ruby 显得较为迟缓。...其中一个 Rails 的问题是它与数据库的高度耦合(也可以说是一种好处)。Rails 专注于掌控数据库的一切。没有数据库,Rails 将毫无用处,甚至可能阻碍工作进展,而不是提供帮助 [2]。...Rails 的 163500 行 Ruby 代码当然无助于加快速度。 “代码行” 并非性能指标,但它们是一种指示。即使是最小的 Rails 项目也包含数十万行代码,即使你只使用其中一小部分数据。...如果添加(或删除)了索引,它们必须伴随着至少调优索引的迁移。 保持所有数据库调用简单。尽可能少的连接,尽可能少的过滤器排序。一般来说,数据库可以更容易地为此进行优化。...在这种情况下,经过优化以过滤获取数据的 Postgresql 可以比 SQLite-inside-ruby 更快地完成这项工作。在典型的生产设置中,Postgresql 更适合这一点。

10430

如何使用本地 Docker 更好地开发?我们总结了这八条经验

作者 | David Eisinger 译者 | 明知山 策划 | 褚杏娟 如果你像我们一样需要运行许多不同的应用程序,那么将开发环境容器化可以极大地提高工作效率。...这样做并不常见——大多数应用程序框架都需要一定数量的镜像基础(例如,Rails 需要 Node),但如果你发现自己的 Dockerfile 只包含一个 FROM 行,你就可以不使用这个文件。...举个例子,假设有个 Rails 应用程序使用一个共享的镜像来运行开发服务器 webpack-dev-server,那么配置可能像这样: services: rails: image: appname_rails...4 在命名卷中缓存依赖项 正如第一点所提到的,我们不会将代码依赖项放到镜像中,而是在启动时安装它们。...5 将临时的东西放入命名卷中 上一点提到使用命名卷来提高性能,这里有另一个有用的技巧:将保存只读文件的目录放入命名卷中,阻止它们被同步回本地机器(这会带来很大的性能开销),特别是 log tmp

2K40
领券