精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

提升你的 Rails Specs 性能 10 倍

開發(fā) 后端 前端
人們疏于在Rails開發(fā)應(yīng)用中去駕馭規(guī)范的一個基本的原因是運行的規(guī)范套件所需要的時間。很多工具可以用來緩和這個麻煩,比如 Spork , Zeus 和 Spring。事實上,Rails 4.1將會在春季推出標準。

人們疏于在Rails開發(fā)應(yīng)用中去駕馭規(guī)范的一個基本的原因是運行的規(guī)范套件所需要的時間。很多工具可以用來緩和這個麻煩,比如 Spork Zeus 和  Spring。事實上,Rails 4.1將會在春季推出標準。不幸的是,這些工具僅僅是解決問題癥狀的 一個拐杖,而不是解決問題本身。實際的問題是書寫耦合度高的代碼需要有一個完整的Rails的架構(gòu)支撐,這個架構(gòu)會緩慢啟動。

開發(fā)解耦代碼

一種解決方法是:書寫的代碼是獨立的,元件盡可能的與系統(tǒng)分離。用另外的話說,就是寫SOLID Rails 代碼。舉一個特殊的例子,可以直接寫一個類模塊去創(chuàng)建一個事例。而不是使用依賴的插入的方法去去除涉及到類的硬編碼。我們僅僅需要去保證:我們安全的采用模塊符號或者懶惰的評價去得到默認的引用。以下是一個服務(wù),它需要在ActiveRecord模塊中創(chuàng)建一個小工具。我們采用懶惰的評價去介入的方法來替換直接的引用工具類。這可以解耦我們的代碼,同時不需要ActiveRecord載入。

  1. # A tightly coupled class. We don't want this.  
  2. class MyService  
  3.   def create_widget(params)  
  4.     Widget.create(params)  
  5.   end 
  6. end 
  7.  
  8. # We can inject in the initializer  
  9. class MyService  
  10.   attr_reader :widget_factory  
  11.  
  12.   def initialize(dependencies={})  
  13.     @widget_factory = dependencies.fetch(:widget_factory) { Widget }  
  14.   end 
  15.  
  16.   def create_widget(params)  
  17.     widget_factory.create(params)  
  18.   end 
  19. end 
  20.  
  21. Or we can explictly inject via a setter with a lazy reader  
  22. class MyService  
  23.   attr_writer :widget_factory  
  24.  
  25.   def widget_factory  
  26.     @widget_factory ||= Widget  
  27.   end 
  28.  
  29.   def create_widget(params)  
  30.     widget_factory.create(params)  
  31.   end 
  32. end 
  33.  
  34. # A specification injecting the dependency using the second method  
  35. describe MyService do  
  36.   subject(:service) { MyService.new }  
  37.   let(:widget_factory) { double 'widget_factory'create: nil }  
  38.   before { service.widget_factory = widget_factory }  
  39.  
  40.   it 'creates a widget with the factory' do  
  41.     service.create_widget({name'sprocket'})  
  42.     expect(widget_factory).to have_received(:create).with({name'sprocket'})  
  43.   end 
  44. end 

當(dāng)你采用這種方式寫代碼時,你可以開始重新組織怎么建立自己的規(guī)范和最小化環(huán)境需求來運行這些規(guī)范和滿足規(guī)則需求的代碼。典型spec_helper.rb會有一個如下的一行代碼:

  1. require File.expand_path("../../config/environment", __FILE__)  

這個將會載入整個的Rails程序且降低測試運行速度。為了讓規(guī)范達到更快的速度,可以使用一個不含有上面那行代碼的配置文件。那么讓我們開始創(chuàng)建一個輕量級的rb包:base_sepc_helper.rb:

  1. ENV["RAILS_ENV"] ||= 'test' 
  2. require 'rubygems' 
  3.  
  4. RAILS_ROOT = File.expand_path('../..', __FILE__)  
  5. Dir[File.join(RAILS_ROOT, 'spec/support/**/*.rb')].each {|f| require f}  
  6.  
  7. RSpec.configure do |config|  
  8.   config.mock_with :rspec 
  9.   config.order = 'random' 
  10.   # Your prefered config options go here  
  11. end 
  12.  
  13. require 'active_support' 
  14. require 'active_support/dependencies' 

我們通過請求active_support和active_support/dependencies包來訪問Rails使用的自動裝載機,實際上并沒有導(dǎo)入所有的Rails。它是相當(dāng)?shù)妮p量級并且方便性超過了損耗。在每個需要這個base包的helper里,我們將會添加我們程序相對應(yīng)的部分到ActiveSupport::Dependencies.autoload_paths中。

簡單的Ruby對象說明

取決于你指定的應(yīng)用程序部分,你可以在任意一個上下文中創(chuàng)建一個你所需要的輔助細則。例如,最簡單的是指定一個任意類型的Ruby純類作為服務(wù)類。如下面services_spec_helper.rb例子

  1. require 'base_spec_helper' 
  2. Dir[File.join(RAILS_ROOT, "spec/support_services/**/*.rb")].each {|f| require f}  
  3. ActiveSupport::Dependencies.autoload_paths << "#{RAILS_ROOT}/app/services" 

裝飾說明

于你的裝飾而言,你可能會選擇布商,你的decorators_spec_helper.rb就如以下所看到的。

  1. require 'base_spec_helper' 
  2. require 'draper' 
  3. Draper::ViewContext.test_strategy :fast 
  4. Dir[File.join(RAILS_ROOT, "spec/support_decorators/**/*.rb")].each {|f| require f}  
  5. ActiveSupport::Dependencies.autoload_paths << "#{RAILS_ROOT}/app/decorators" 

模塊規(guī)范

測試模塊還需要做一點事情. 假設(shè)你現(xiàn)在正在用ActiveRecord你會需要建立一個和數(shù)據(jù)庫的連接. 我們并不需要將defactory_girl或者database_cleaner加入你的測試中,而且并不會真的創(chuàng)建對象. 實際上,唯一需要進行創(chuàng)建數(shù)據(jù)庫對象的地方就是當(dāng)你進行特定對象測試的時候.當(dāng)你確實需要創(chuàng)建一些對象的時候,你只需要手動的進行清理和轉(zhuǎn)換. 這就是一個樣例models_spec_helper.rb:

  1. require 'base_spec_helper' 
  2. require 'active_record' 
  3. # RSpec has some nice matchers for models so we'll pull them in  
  4. require 'rspec/rails/extensions/active_record/base' 
  5. Dir[File.join(RAILS_ROOT, "spec/support_models/**/*.rb")].each {|f| require f}  
  6.  
  7. # Manually connect to the database  
  8. ActiveRecord::Base.establish_connection(  
  9.   YAML.load(File.read(RAILS_ROOT + '/config/database.yml'))['test']  
  10. )  
  11.  
  12. ActiveSupport::Dependencies.autoload_paths << "#{RAILS_ROOT}/app/models" 

特點說明

最后, 當(dāng)我們創(chuàng)建特色應(yīng)用時, 我們會需要Rails全套知識并且feature_spec_helper.rb看起來就和spec_helper.rb差不多了.

作為總結(jié)

我自己也開始在項目中加入這些改變并且這也讓我能用更加簡單的代碼去完成一個項目. 你們可以在Github上找到:https://github.com/Originate/rails_spec_harness

當(dāng)在項目中引入這些變化時候,我發(fā)現(xiàn)速度至少增長了8-12倍. 變化最大的一個項目竟然增長了27倍同時也包括了這些對應(yīng)的編程效率上的提高.舉個例子,我開始寫一個含有4個簡單例子的Ruby類. 然后我使用time命令行工具去衡量運行的效率,并且之后我能得到如下的結(jié)果,F(xiàn)ULL Rails VS MINIMAL:

Spec Helper Real User Sys RSpec Reported
Full Rails 4.913s 2.521s 1.183s 0.0706s
Minimal 0.492s 0.407s 0.080s 0.0057s

寫牛逼的代碼,隔離你的單獨模塊,然后,享受編碼的樂趣吧。

英文原文:Speed Up Your Rails Specs by 10x

原文鏈接:http://www.oschina.net/translate/improve-your-rails-specification-speed-by-10x

責(zé)任編輯:林師授 來源: 開源中國社區(qū) 編譯
相關(guān)推薦

2020-07-21 15:40:55

NginxJava服務(wù)器

2011-07-01 10:11:39

2017-12-13 13:09:36

NginxWeb應(yīng)用

2020-03-26 12:38:15

代碼節(jié)點數(shù)據(jù)

2025-05-27 01:55:00

TypeScript開發(fā)者項目

2024-10-29 08:21:05

2018-08-23 17:45:52

2019-09-26 08:33:51

Nginx技術(shù)Java

2020-07-22 08:30:02

代碼開發(fā)工具

2013-04-01 00:16:41

飛魚星無線云無線AP

2021-12-29 11:06:25

Java代碼技巧

2022-11-19 18:18:22

Spring架構(gòu)

2022-12-13 08:45:01

3F傾聽模型

2024-11-25 09:11:43

2023-06-13 13:52:00

Java 7線程池

2023-10-20 08:12:00

JDK21線程池配置

2025-10-17 08:00:00

2023-02-21 13:32:09

Linux 6.3操作系統(tǒng)

2022-09-09 09:33:14

支付寶代碼性能
點贊
收藏

51CTO技術(shù)棧公眾號

高清shemale亚洲人妖| 欧美在线播放| 另类图片国产| 亚洲综合在线第一页| 精品乱子伦一区二区三区| 国产美女www爽爽爽| 国产电影一区二区在线观看| 精品国产乱码久久久久久老虎 | 国产精品偷伦视频免费观看了| av不卡高清| 欧美国产日产图区| 国产高清自拍一区| 中文字幕人成人乱码亚洲电影| 欧美日本一区二区视频在线观看| 亚洲天堂av网| 久久精品女同亚洲女同13| 欧美视频在线视频精品| 亚洲电影中文字幕在线观看| 亚洲a∨一区二区三区| 人成网站在线观看| 精品一区二区三区视频| 日本一区二区三区四区视频| 欧美在线视频第一页| 国内亚洲精品| 亚洲精品美女免费| 男男受被啪到高潮自述| 国产精品高清乱码在线观看| 亚洲最大的成人av| 中文字幕超清在线免费观看| 草草影院在线观看| www国产精品av| 97人人模人人爽人人少妇| 自拍偷拍第八页| 亚洲综合国产激情另类一区| 精品中文字幕在线2019| 日韩在线观看免| 成人中文在线| 亚洲丝袜在线视频| 久久精品老司机| 亚洲第一福利社区| 日韩电影第一页| 日本69式三人交| 999在线精品| 欧美成va人片在线观看| 日本特黄在线观看| 亚洲午夜剧场| 在线电影院国产精品| 久久撸在线视频| 99re久久| 欧美视频中文字幕| 五月婷婷激情久久| 成人日韩av| 精品1区2区3区| www.com操| 中文字幕av一区二区三区佐山爱| 欧美性高跟鞋xxxxhd| 成年网站在线免费观看| 中文在线免费视频| 91福利在线播放| 一区二区三区免费播放| 一个人看的www视频在线免费观看| 亚洲成人av电影| 男人天堂1024| 在线一区视频观看| 欧美日本韩国一区| 国产男女无遮挡猛进猛出| 韩国一区二区三区视频| 日韩精品专区在线| 最近中文字幕无免费| 欧美**vk| 色婷婷久久av| 免费在线观看亚洲| 国产欧美午夜| 国产成人精品一区二区在线| 在线视频 91| 国产成人综合在线观看| 久久久综合香蕉尹人综合网| 成人在线观看一区| 亚洲精品ww久久久久久p站| 日韩伦理在线免费观看| 欧美gay囗交囗交| 欧美精品vⅰdeose4hd| 超级砰砰砰97免费观看最新一期 | 男人的天堂亚洲一区| 成人午夜高潮视频| 手机av免费在线观看| 国产亚洲成av人在线观看导航 | 欧美三级日韩三级国产三级| www激情五月| 欧美调教在线| 精品国产一区二区三区久久久狼 | 欧美日本在线视频| 免费黄色三级网站| 91综合在线| 国语自产在线不卡| 亚洲视频中文字幕在线观看| 成人一区在线观看| 亚洲人成网站在线观看播放| 久草在线视频资源| 欧美视频在线一区二区三区| 国产人成视频在线观看| 日本电影一区二区| 欧美性受xxxx白人性爽| 国产精品国产一区二区三区四区| 不卡av在线网| 最新av网址在线观看| xxxxxx欧美| 日韩精品一区二区三区中文不卡 | 特级西西人体4444xxxx| 91tv官网精品成人亚洲| 国产精品精品一区二区三区午夜版| www.麻豆av| 亚洲国产高清在线观看视频| 国产精品又粗又长| 国产精品日本一区二区不卡视频| 亚洲欧美日韩国产精品| 久久久久久久久97| 精品一区二区在线播放| 日本在线成人一区二区| av在线视屏| 日韩美女一区二区三区四区| 亚洲女人毛茸茸高潮| 久久精品女人| 精品综合在线| 欧美人与动牲性行为| 欧美精品aⅴ在线视频| 成都免费高清电影| 一本色道精品久久一区二区三区| 亚洲一区二区日本| 婷婷激情在线| 欧美三级午夜理伦三级中视频| 日韩精品卡通动漫网站| 99精品视频免费| 成人激情av| 国产精品偷拍| 日韩精品一区二区三区视频 | 天天综合色天天| 9.1在线观看免费| 欧美视频不卡| 成人资源av| 国精产品一区一区三区mba下载| 51精品视频一区二区三区| 老司机精品免费视频| 奇米精品一区二区三区四区 | 亚洲一区中文字幕| a视频在线免费看| 欧美一区午夜视频在线观看| 99自拍视频在线| 精品写真视频在线观看| 免费国产成人看片在线| 国产亚洲观看| 欧美日本黄视频| 亚洲av综合色区无码一二三区| 一区二区在线免费观看| 美女又黄又免费的视频| 亚洲香蕉网站| 国产亚洲欧美一区二区| 黄视频免费在线看| 亚洲欧美精品中文字幕在线| 亚洲永久精品一区| 国产精品久久久久久久久免费樱桃| 天天干天天干天天干天天干天天干| 欧美日韩国产在线观看网站| 国产欧美日韩高清| av香蕉成人| 精品成人a区在线观看| 五月天综合激情网| 国产欧美va欧美不卡在线 | av在线不卡观看免费观看| 老太脱裤让老头玩ⅹxxxx| 五月国产精品| 国产精品丝袜白浆摸在线 | 日韩精品永久网址| 91在线中文字幕| 91高清视频在线观看| 亚洲欧美国产一区二区三区| 亚洲视频久久久| 亚洲制服丝袜一区| 中字幕一区二区三区乱码| 久久99精品久久久久久| 男人天堂手机在线视频| 久久av资源| 亚洲www在线观看| 麻豆视频在线看| 日韩亚洲一区二区| 蜜桃av中文字幕| 色哟哟国产精品| 你懂得在线观看| 99久久精品99国产精品 | 国产又大又黄又粗| 中文字幕一区二区三区在线不卡| 成人做爰www看视频软件| 日韩不卡手机在线v区| 男女激烈动态图| 中文字幕精品影院| 91成人免费观看| 懂色aⅴ精品一区二区三区| 欧美大片免费看| 阿v免费在线观看| 亚洲激情自拍图| 一炮成瘾1v1高h| 岛国av一区二区在线在线观看| 日本一二三区在线观看| 久久人人97超碰com| 国产xxxxhd| 秋霞国产午夜精品免费视频| 黄色大片中文字幕| 久久久久国产| 神马影院我不卡| 精品女人视频| 91成人伦理在线电影| 成人全视频免费观看在线看| 91精品国产色综合| 午夜av在线播放| 在线观看亚洲区| 青春有你2免费观看完整版在线播放高清| 91精品在线免费观看| 最新中文字幕免费| 欧美日韩中文字幕| 国产亚洲成人精品| 亚洲美女少妇撒尿| 国产又色又爽又高潮免费| 久久精品亚洲麻豆av一区二区 | 禁断一区二区三区在线| 国产在线精品日韩| 一区二区在线视频观看| 91精品国产综合久久香蕉922 | 欧美在线不卡一区| 一区二区三区福利视频| 亚洲在线观看免费| 久久亚洲AV无码| 一区二区久久久| 青青草激情视频| 亚洲人成精品久久久久| 久久噜噜色综合一区二区| 国产亚洲精品久| 男人舔女人下部高潮全视频| 久久婷婷国产综合国色天香| a视频免费观看| 91一区二区三区在线播放| 国产精品久久久久久久无码| 成人黄色在线视频| 中国xxxx性xxxx产国| 成人av在线播放网址| 天天躁日日躁狠狠躁av麻豆男男 | 秋霞在线观看一区二区三区| 欧洲在线一区| 久久精品国产一区二区三区不卡| 欧美韩一区二区| 鲁丝一区鲁丝二区鲁丝三区| 自拍视频一区| 天堂社区 天堂综合网 天堂资源最新版 | 欧美在线你懂得| 中文字幕日本人妻久久久免费 | 天堂美国久久| 国产av第一区| 亚洲毛片av| 中国丰满人妻videoshd| 免费在线观看成人av| 欧美精品成人网| 激情综合网天天干| a级大片免费看| 波多野结衣精品在线| 国精产品一区一区三区免费视频 | 亚洲国产综合自拍| 亚州av乱码久久精品蜜桃| 久久免费一级片| 一区二区三区精品视频在线观看| 日韩a在线播放| 久久国内精品视频| 97超碰免费在线观看| 91网上在线视频| 特级西西人体高清大胆| 一区二区三区在线看| 99热只有这里有精品| 在线观看av不卡| 精品人妻少妇AV无码专区| 亚洲精品国产拍免费91在线| 国产精品影院在线| 粗暴蹂躏中文一区二区三区| 欧美aa免费在线| 国产精品自拍偷拍| 国产精品xxx在线观看| 日韩欧美激情一区二区| 一级欧洲+日本+国产| 国产超级av在线| 精品系列免费在线观看| 国产 中文 字幕 日韩 在线| 欧美国产国产综合| 国产亚洲欧美久久久久| 欧美视频中文字幕| 欧美一区二区三区成人片在线| 在线成人一区二区| xxx在线免费观看| 国产噜噜噜噜久久久久久久久| 成人自拍在线| 黄色a级在线观看| 久久动漫亚洲| 影音先锋资源av| 自拍偷在线精品自拍偷无码专区| www.国产com| 日韩欧美在线不卡| www.视频在线.com| 91精品国产99| 日本免费一区二区三区视频| 性欧美大战久久久久久久免费观看| 亚洲一级网站| 51自拍视频在线观看| 中文无字幕一区二区三区| 国产69精品久久久久久久久久| 日韩一区二区三| 在线看免费av| 日本成人精品在线| 精品素人av| av一区二区三区免费观看| 激情综合网天天干| 东京热无码av男人的天堂| 欧美色播在线播放| 人人妻人人澡人人爽人人欧美一区| 日韩在线观看免费高清完整版| 日韩免费电影| 免费一区二区三区在在线视频| 黄色成人精品网站| 特种兵之深入敌后| 亚洲激情五月婷婷| 国产乱色精品成人免费视频| 中文字幕在线国产精品| 亚洲国产尤物| 亚洲春色在线视频| 日韩中文字幕一区二区三区| 精品人妻互换一区二区三区| 欧美日韩中文在线观看| 无码国产精品高潮久久99| 久久全国免费视频| 国产香蕉精品| 成人网站免费观看入口| 成人午夜免费av| 精品亚洲永久免费| 亚洲成人aaa| 678在线观看视频| 国产一区二区精品免费| 亚洲精品孕妇| 免费观看一级一片| 欧美视频一区二区三区…| 天堂在线中文字幕| 琪琪第一精品导航| 精品久久网站| 奇米视频888| 亚洲欧美激情小说另类| 精品欧美在线观看| 国模私拍一区二区三区| 欧美三级午夜理伦三级在线观看| 国产二区视频在线播放| 国产拍欧美日韩视频二区 | 精品成人一区二区三区四区| 97超碰免费在线| 久久精品日韩精品| 老牛影视一区二区三区| 91在线无精精品白丝| 欧美日韩一区二区欧美激情| 久久久久久国产精品免费无遮挡| 亚洲aⅴ男人的天堂在线观看 | 成人黄色av| av在线免费看片| 亚洲国产精品麻豆| 你懂的在线视频| 成人高清视频观看www| 欧美在线日韩| 毛茸茸多毛bbb毛多视频| 欧美亚洲动漫制服丝袜| 青春草视频在线| 蜜桃传媒视频麻豆第一区免费观看| 日韩**一区毛片| 玖玖爱免费视频| 日韩风俗一区 二区| 久久伊人国产| 国产成人永久免费视频| 久久综合久久99| 国产又粗又大又爽| 国模gogo一区二区大胆私拍| 精品久久91| 师生出轨h灌满了1v1| 色婷婷亚洲婷婷| 国产精品久久麻豆| 精品日本一区二区| 久久99国产精品成人| 精品在线播放视频| www.日韩免费| 四虎5151久久欧美毛片| 亚洲一级片av| 欧美午夜无遮挡| 99热国产在线| 日本欧洲国产一区二区| 成人一区二区三区视频 | 亚洲成人久久久| 欧洲亚洲精品| 日韩视频第二页| 亚洲综合精品自拍| 久久综合九色综合久| 成人久久18免费网站漫画|