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

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

有时候,为了获得其他优势而适度放缓某些需要是明智的决策,尤其是如果这种放缓仍在可接受的范围内。...而且,Rails 的规模相当庞大 [3]。与 Ruby 语言类似,它更侧重于人机工程学(对开发者友好度)而非性能。这是好事!...这归功于其简单的查找操作,无需连接使用一个索引,所需数据量也很少等等。然而,解析(处理数据)却耗费了大量时间:DateTime::parse。...很容易以次优的方式连接表,对未索引的进行排序或过滤。Active-record 充满了一些工具,可以很容易地滥用数据库,无需警告。...大多数都是合理的理由,除了最后一个:这是选择 Rails 的一个可怕的理由。

13030

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

译者: 技术达人李亚飞, 现任百分之八十公司 CTO, 团队有 7 位全栈 Rails 工程师. 2004 年, 我们选择 Rails, 那么今年, 我们也会因为同样的原因选择 Rails....今天, 大多数框架停留在给用户提供另一个点菜单, 另一个构建系统, 或者另一个视图库, 再或者另一个 ORM. 很少有框架是提供完整解决方案的....我想, 就标题的问题来讲, 答案就是, Rails 的约定大于配置核心原则能够有效帮助开发者减轻选择轮子的痛感....正如我上面提到的, Rails 有一个雄心勃勃的终极使命, 那就是站在全栈的角度下, 帮助开发者处理好过程中的每一块代码, 从连接到数据库, 到 nosql 数据存储, 到业务模型, 到控制器, 直到最后...虽然 Rails 默认是全栈包括 HTML 端渲染, 并且我们缺省提供了 Turbolinks 和 SJR 供大家选择, 但如果这条路不那么有吸引力, 也可以很容易进行替换.

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

    Ruby vs Elixir | 2022 该选哪个?

    分布式并发 也是由于 Erlang 在电信行业的广泛应用,使得 Erlang 适合管理大量连接,Elixir 也支持并发。Elixir 可以在单台或者多台机器上创建大量连接。...轻量级进程 在 Elixir 中,代码通过进行来执行,Elixir 并发的核心就是每个进程都是轻量级的继承,消耗极少的内存和 CPU,可以同时创建成千上万个轻量级进程。...当然,随着 Ruby 3 的推出,这一点可能会发生变化,据说它的性能与以前的版本相比提高了三倍。...可维护性 GEM 使 Ruby 和 Rails 成为开发人员在编写 Web 应用时有许多现成的解决方案可以选择,但在长期维护方面,GEM 也可能导致许多问题。...举个例子:比如在一台服务器上创建130万个连接!。

    1.6K10

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

    该过程需要用到Phusion Passenger应用服务器,该服务器以其简单性和出色的功能著称,并与前面运行的Nginx HTTP服务器一起处理和管理连接。...准备Deployment Server 更新和准备操作系统 设置Ruby环境和Rails 下载并安装服务器应用程序 3....它能够非常好地提供静态文件(例如图像,文本文件等),平衡连接,并处理某些漏洞尝试。它充当所有请求的第一个入口点,并将它们传递给Passenger,以便Web应用程序处理并返回响应。...请记住: “处理”连接在技术上意味着不要丢弃它们并能够用某些东西为它们提供服务。您仍然需要您的应用程序和数据库正常运行才能让Nginx为客户端提供非错误消息的响应。...如果您愿意,可以使用箭头键和空格键单独选择Ruby。 Use to select.

    5K20

    如何部署Mina:入门教程

    介绍 如果您正在寻找一种方法来帮助某些您每天执行的操作,正如简单的搜索显示的那样,可用的工具很多。如果您检查它们,会发现这些都声称可以使您的应用程序在线(即部署)更容易。...术语表 1.了解Mina&Rake Mina Deployer和自动化工具 RAKE - Ruby Make 2.获得Mina 准备系统 设置Ruby环境和Rails 安装Mina 3.使用Mina 启动...Mina将这些基于RAKE的编程文件转换为Bash脚本,连接到已定义的远程服务器并执行它们。 它实际上运行非常快,并且可能和它的类型工具一样快,因为它只是连接到服务器并运行Bash程序。...它被称为构建工具,因为如前面所述,它的操作通常与构造某些东西(例如库,应用程序等)有关。 RAKE可以通过RubyGems获得。...在Deployment Server上创建部署者用户 创建除root之外的用户来执行Mina将使用和调用的部署操作是一个理智的选择。为此,让我们在远程主机上创建一个deployer用户。

    4.5K40

    RadRails1.0降临——增加Profiler、CallGraph Analyzer和Rails Shell等新特性

    这里有一个RadRails、Netbeans和CodeGears的3rdRail的特性完全比较,从比较中可以看出RadRails在重构(refactoring)和性能剖析(profiling)方面更胜一筹...如 果要实现这个功能:我们就得修改ruby-prof gem使得它类似于ruby-debug的ruby-debug-ide gem那样工作——至少可以允许对于profiler的远程连接和实时地通过套接字来发送剖析相关的命令...也包含了jruby-debug,一个更快的JRuby调试支持的实现: 是的,在RadRails 1.0之中我们已经支持JRuby版本的ruby-debug gem——因此现在有了一个快速的JRuby调试的选择...只需要连接Rubinius的调试器,打开一个套接字并读入 XML命令即可。(如果其他人需要这样的话,请联系我或者Martin。...你需要编写Ruby/JRuby代码、运行脚本、编辑它、再运行,诸如此类。通过 DOM我们能够提供一个很小很简单的API,看上去很像Ruby API。

    1.9K80

    使用Capistrano,Nginx和Puma在Ubuntu 14.04上部署Rails应用程序

    警告:禁用root登录后,请确保您可以作为部署用户SSH连接到服务器,并在关闭您打开的root SSH会话以进行这些更改之前为该用户使用sudo。 本教程中的所有命令都应以deploy用户身份运行。...droplet:~$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3...', require: false gem 'capistrano3-puma', require: false end gem 'puma' 使用bundler安装您在Gemfile中指定的...# Restart puma # kill -s SIGTERM pid # Stop puma deploy.rb文件包含一些初始情况下的默认设置,可帮助您管理应用程序版本并在进行部署时自动执行某些任务...如果一切顺利,我们现在准备将您的Puma Web服务器连接到Nginx反向代理。

    5K40

    DevOps工具介绍连载(40)——Mingle

    特别是,Ruby on Rails应用程序的部署故事仍然比应有的要复杂得多。这对于托管应用程序是很好的,其中部署平台完全由单个公司控制,但是Mingle不会托管。...它不仅需要“放大”到Twitter的大小(好吧,这是一厢情愿的想法,也许不需要那么多缩放),而且还需要将“缩小”到一个简单的比例Windows XP计算机具有少量RAM。...企业客户可以选择将Mingle部署到他们现有的生产系统中: 几个月后发布的Mingle 1.1也将以.war文件的形式提供,该文件可以部署在任何流行的Java EE应用程序服务器上,也可以使用任何流行的数据库服务器进行部署...参与其中的每个人都非常在意使用Rails的好处: “ Ruby on Rails使我们的生产力异常提高,并且处理复杂性的程度与其他方式完全不同。...顾翔老师与云测学院联合推出:软件测试分析与设计,请点击https://v.youku.com/v_show/id_XNDQ3MzkyNjk3Ng==.html?

    74710

    DevOps工具介绍连载(48)——静态扫描工具Brakeman

    包括对少量与Rails相关的CVE的检查。使用bundler-audit或相关工具进行依赖性检查。...变化 排序忽略文件 以前,“忽略文件”中的警告按指纹排序。由于有了Ngan Pham,现在可以按指纹然后按行号对它们进行排序,以保持具有相同指纹的警告之间的稳定顺序。...变化 命令中的危险串联 Jacob Evelyn更新了命令注入检查(CheckExecute),以考虑将字符串连接起来并带有危险值。...模型文件名 在某些情况下,警告丢失了文件名,因为该文件名未传递给模型处理器。 现在将传递文件名,并且测试套件中有一个针对警告文件名的新测试。...字符串长度限制 现在,Brakeman会在连接两个弦(例如"blah" + "blah blah")之前检查结果长度。如果连接的字符串超过50个字符,则不连接字符串。

    2.2K10

    如何在CentOS 6.5上使用Unicorn和Nginx部署Rails应用程序

    谈到功能,应该注意的是,有一些流行的服务器可供选择,每个服务器提供不同的功能:一些专注于简单性,一些专注于速度,以及一些可能配置全覆盖选项以满足复杂生产需求的一切。...在本文中,我们选择的应用服务器是Unicorn。Unicorn是一个卓越的应用服务器,它包含你的Rails应用程序来处理传入的请求,最好是在它们被前端HTTP服务器(如Nginx)过滤和发送之后。...它能够非常好地提供静态文件(例如图像,文本文件等),平衡连接,并处理某些漏洞尝试。它充当所有请求的第一个入口点,并将它们传递给Unicorn,以便Web应用程序处理并返回响应。...运行以下两个命令来安装RVM并为Ruby创建系统环境: gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 \curl -sSL https...执行以下命令以使Rails创建名为“my_app”的新应用程序: # Create a sample Rails application cd /var mkdir www cd www rails

    4.1K20

    用selenium自动化验收测试

    在 清单 1 中: 第一包含命令 或断言。 第二包含命令或断言的目标(target)。这里可以用多种受支持的组件定位符中的一种来指定目标。...清单 3 展示了一个测试套件,该套件像通常的用户一样测试应用程序。注意,测试套件使用一个只包含一的表,表中的每一行指向一个包含某个测试用例的文件。 清单 3....驱动程序与 browser bot 之间的通信使用一种简单的特定于 Selenium 的连接语言 Selenese。...在某些平台上,必须执行一些额外的步骤,所以请访问 Ruby on Rails 网站,以获得更多细节。 在我撰写本文之际,目前可用的 Selenium 版本是 0.6。...图 3 展示了被转换成 Selenium 用例的需求。 图 3. 查看股票细节测试用例 注意 pause 命令:必须使用这些命令,以便等待异步请求完成和更新页面内容。

    6.2K30

    如何使用Gitlab CICD快速集成Kubernetes

    我们需要选择,学习,安装,集成和维护各种工具。 GitLab提供了一个功能齐全的工具生态系统,使我们能够在几分钟内创建自动化管道!...注意: 请注意选择与Registry侦听的端口不同的端口(5000默认情况下),否则会遇到冲突。...= '随便取' gitlab_rails['gitlab_email_reply_to'] = 'noreply' gitlab_rails['smtp_enable'] = true gitlab_rails...gitlab-ctl reconfigure gitlab-ctl restart 3、现在我们访问项目界面会出现注册表 ?...我们选择依赖项,它支持使用Tomcat和Spring MVC进行完全堆栈Web开发,以及实现某些生产级功能的依赖项,这些功能对监视和管理应用程序(如运行状况检查和HTTP请求跟踪)非常有用。

    3.2K20

    如何使用 Gitlab CICD 快速集成 Kubernetes

    注意: 请注意选择与Registry侦听的端口不同的端口(5000默认情况下),否则会遇到冲突。...gitlab-ctl reconfigure gitlab-ctl restart 3、现在我们访问项目界面会出现注册表 ?...3、创建一个GitLab项目 参考文章:https://about.gitlab.com/2016/12/14/continuous-delivery-of-a-spring-boot-application-with-gitlab-ci-and-kubernetes.../ 要引导Spring Boot应用程序,我们导航到Spring Initializr Web页面并使用预先选择的Spring Boot Version生成Gradle项目。...我们选择依赖项,它支持使用Tomcat和Spring MVC进行完全堆栈Web开发,以及实现某些生产级功能的依赖项,这些功能对监视和管理应用程序(如运行状况检查和HTTP请求跟踪)非常有用。

    2.5K40

    win10下vagrant+centos7 rails虚拟开发机配置流程

    所以写下此文,总结经验) 配置流程 1、box镜像的选择 本文中,笔者由于网站服务器系统为centos7.2,所以理所应当的选择了centos的镜像。...(安利一下我用的镜像:https://app.vagrantup.com/centos/boxes/7) 在选择镜像的时候要注意以下几点: 如没有十足的把握,请尽量选择较新且完整版的镜像(尽量不要Minimal...原镜像地址由于某些神秘的原因(你懂得),接下来ruby下载速度奇慢,而且还不稳定。...3、将虚拟机映射至ip 其实这一步也很简单,将Vagrantfile里面的这一行注释去掉即可(同时也请保证局域网内ip地址没有冲突,如有冲突,请更换一个ip。...192.168.33.10" 然后网站就可以通过192.168.33.10:3000访问,数据库可以用192.168.33.10链接,甚至也可以用putty通过192.168.33.10的ip地址链接,就像连接你的服务器一样

    1.8K70

    推荐三篇不错的文章:我们能从 Rails 框架学到的经验 & 在 Ruby on Rails 中进行单元测试

    阅读更多 跨越边界: Ruby on Rails 的秘笈是什么? 我们能从 Rails 框架学到的经验 Ruby on Rails 好像一直处于争论的风口浪尖。...跨越边界 的作者 Bruce Tate 已经开始理解 Rails 并不是一个更好的工具,而是一个不同类型的工具。本文研究了使 Rails 在某个领域如此高效率的折衷和设计决策。...这篇文章是关于在 Ruby on Rails 上进行测试的两篇文章中的第一篇,将介绍 Rails 单元测试的方式。...中进行单元测试 在由两篇文章组成的这一系列的 第 1 部分 中,介绍了如何用 Ruby on Rails 进行单元测试,并展示了如何利用这种方式的某些方面改进 Java™ 的单元测试。...Java 开发人员对更高级测试的选择更加有限。在这篇文章中,将继续研究 Rails,体会用于功能测试和集成测试的集成框架的优势。

    1.2K20

    GitLab安装与基础使用

    WeiyiGeek. 8) 用户项目权限控制 权限管理理解: (1).新建用户的时候选择一个普通权限和管理员权限之分即可 (2).建git库的时候可以关联一个组或者一个成员 (3).添加到组里面的人员可以设定...['backup_path'] = '/home/backups' #备份保留7天 gitlab_rails['backup_keep_time'] = 604800 #3.修改配置后重载配置 $gitlab-ctl...WeiyiGeek.sendemail 补充说明: 在某些ECS专有网络主机上配置了一个gitlab仓库,因为默认这些专有网络的ECS主机都是禁用了25端口的,所以这个gitlab.rb的配置就有做相应的改变.../opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:52:in `block (3 levels) in <top (required.../opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:49:in `block (3 levels) in <top (required

    8.5K20

    扩展我们的分析处理服务(Smartly.io):使用 Citus 对 PostgreSQL 数据库进行分片

    由于较小的表索引和更多资源可用于在单独的 worker 中进行查询处理,因此针对单个 worker 分片的查询也会加快速度。 将大型数据库和复杂的报告查询迁移到这种类型的分片数据库架构中绝非易事。...早在数据库扩展问题出现之前,我们就开始使用 Ruby on Rails 构建更新的报告后端。在决定只在新后端处理 SQL 查询迁移后,我们开始逐步淘汰旧后端。...我们还必须更改一些外键和唯一性约束,因为它们还必须包含分片。...因此,查询需要在 JOIN 条件中包含分片,Citus 能够从中检测到 ads 表连接的范围在一个分片内: SELECT * FROM campaigns LEFT JOIN ads ON campaigns.account_id...该图显示了在数据库迁移项目期间,某些类型的查询获得性能提升的 90 个百分点的持续时间。

    72930
    领券