Rails

从Asset Packager升级到Assets Pipeline

给你一囗甜甜゛ 提交于 2019-12-06 02:06:53
最近做的一个项目是把一个原来 Rails 2 的网站升级到 Rails 3.2。 这个 project 里面用到了Asset Packager 来管理 Javascript 文件。Rails 3.1 开始采用 Assets Pipeline 来管理 Javascript,stylesheet,和 images 等资源。在研究了一下 Asset Packager 以后,发现它做的事情和 Assets Pipeline 接近。升级的策略比较直接,如下: 1. 把 public/javascripts 下的文件拷贝到 app/assests/javascripts下。 2. 对应文件 config/asset_packages.yml 里面的每个javascript package 名字,在 app/assets/javascripts 下创建一个文件。这个文件的名字格式如下: #{package_name}_package.js 。这个文件里面列出原来 package 包含的文件。 例如文件asset_packages.yml 里面包含如下内容 javascripts: - base: - jquery/jquery-1.3.2 - jquery/jquery.livequery - jquery/jquery.validate-1.5.1 - jquery/jquery

修改Rails默认生成的Gemfile的source

人走茶凉 提交于 2019-12-05 23:36:51
由于大陆的“特殊情况”,rails默认生成的Gemfile的源 https://rubygems.org 很慢甚至被重置,所以适应国情,要修改下Rails默认生成的Gemfile文件。 如何做呢? 很简单,切换到Rails的默认模板路径下,修改Gemfile文件的source: 1、 cd $rvm_path/gems/ruby-1.9.3-p194@rails32/gems/railties3.2.5/lib/rails/generators/rails/app/templates/ 2、修改Gemfile文件,替换 https://rubygems.org 为 http://ruby.taobao.org 来源: oschina 链接: https://my.oschina.net/u/1000656/blog/291755

ShowMeBug 核心技术内幕

两盒软妹~` 提交于 2019-12-05 04:04:12
ShowMeBug 是一款远程面试工具,双方可通过在线面试板进行实时沟通技术。所以关键技术要点在于 “实时同步”。关于实时同步,ShowMeBug 采用了以下技术。 OT 转换算法 本质上,ShowMeBug 核心就是多人同时在线实时编辑,难点即在这里。因为网络原因,操作可能是异步到达,丢失,与他人操作冲突。想想这就是个复杂的问题。 经过研究,最好用户体验的方式是 OT 转换算法。此算法由 1989 年 C. Ellis 和 S. Gibbs 首次提出,目前像 quip,google docs 均用的此法。 OT 算法允许用户自由编辑任意行,包括冲突的操作也可以很好支持,不用锁定。它的核心算法如下: 文档的操作统一为以下三种类型的操作( Operation ): retain(n): 保持 n 个字符 insert(s): 插入字符串 s delete(s): 删除字符串 s 然后客户端与服务端各记录历史版本,每次操作都经过一定的转换后,推送给另一端。 转换的核心是 S(o_1, o_2) = S(o_2, o_1) 换言之,把正在并发的操作进行转换合并,形成新的操作,然后应用在历史版本上,就可以实现无锁化同步编辑。 下图演示了对应的操作转换过程。 https://daotestimg.dao42.com/ipic/070918.jpg 这个算法的难点在于分布式的实现

Ruby on Rails学习心得(二)Hello Ruby on Rails

痴心易碎 提交于 2019-12-04 20:21:33
已经配置好Ruby on Rails 的开发环境了,现在开始来写地一个Ruby on Rails项目——输出Hello Ruby on Rails。 一、新建项目 先进用进入存放项目的文件夹,输入一下命令rails new projectName,例如 rails new MyBlog 其中我要新建的项目名称是MyBlog 建好项目以后,然后进入MyBlog文件夹,修改Gemfile,在里面添加gem 'execjs'和gem 'therubyracer'(可能有些人不用添加这两句,主要看之后能不能执行bundle install,我是要这样写的),添加完成以后保存退出,然后执行bundle install,这句命令会安装所需要的gem 最后是一下执行rails server,就可以启动服务器了,登录 http://localhost:3000/ 显示一下界面表示新建策划你成功 二、修改文件 新建好项目以后就可以开始新建文件,显示自己想要的界面了。(修改的过程中可以不用停止服务器,这个是Ruby on Rails动态语言的优点) Ruby on Rails是MVC结构的,要新建一个模块都需要命令来新建,否则就要自己来进行配置了。 先来新建一个controller ,输入命令 rails g controller Home index 这样可以看到在项目文件下面看到多了一些文件

行为驱动设计(rspec)

强颜欢笑 提交于 2019-12-04 15:51:35
行为驱动设计(rspec) 原文:Behavior Driven Design (并非公开版权文档) 你可能已经注意到,验证模对象改变了你在单元测试中执行的那类测试的本质。传统的单元测试中,通过断言(Assertion)来进行大多数的验证。这是一种对应用程序状态的测试。模对象的测试,是测试测试中调用过程十分符合预期。它测试的是应用程序的行为。至少潜在能力上,行为测试更容易将期望行为与实际的实现方法分开。 行为驱动设计(BDD)的口号是试图将测试设计从实现空间移到问题空间。部分地使用设计BDD工具集,测试可以通过指定更接近自然语言的关键词来进行。BDD工具充分利用模对象,既作为说明问题的方法,也作为区分单独的个别单元测试的方法。使用传统的TDD测试,低层方法的修改会导致很多测试失败。BDD认为一个代码的改变能产生许多测试失败表明这个测试不是真正意义上的单元测试,而是集成测试,尽管是非常小的范围内。TDD方式的测试只有在实际对象不能得到或者不好用的情况下才会使用模对象,BDD方式则更加积极地使用模对象来将测试中的函数与系统的其它部分分离。 这个章节将概要地介绍一下RSpec(Ruby中最流行的BDD测试包)。RSpec与Rails集成得非常好,包括单独地测试Controller, View和Helper函数的能力。 安装RSpec RSpec即可以作为Ruby

RSPEC::RAILS介绍(翻译)

邮差的信 提交于 2019-12-04 15:51:22
想有一下RSPec来做BDD开发,地发现中文资料太少了,无耐只能自己去主页上看资料,做为爱国者,俺的英文真烂得不成,不过翻完了,发出来大家乐一乐吧。 Spec::rails --------------------------- 一个将RSpec引入Rails的Rails插件 特点: 1. 可以使用RSpec独立的测试models,views,controllers和heplers 2. 整合了具夹(fixture)的载入 3. 为models和controllers特别制作的生成器,可以生成指定的测试RSpec文件来代替原来rails默认生成的tests文件。 4. 增加了很多易读的匹配器 愿景: 对那些刚认识TDD这个概念的人来说,rails的测试支持是一个大的飞跃。弄好这些测试就相当的棒了,因为这样的rails程序通常会比没有测试支持的rails程序要容易维护的多。 对于我们这些经历了TDD到现在的BDD的人来说,还必须考虑在现有支持上那些spec之间依赖性的问题。为此,RSpec支持4种规范。这主要启发于Test::Rails,这个zenTest内置rails框架。 我们还建立良好的mocking和stubbing的支持,以助于打破那些不同关联间的依赖关系。 不同类型的Example Groups: -------------------------------------

使用docker运行gitlab服务

孤者浪人 提交于 2019-12-04 10:44:58
之前,在服务器上直接安装配置过gitlab,感觉需要配置安装的东西还是挺多的:git,redis,postgresql,nginx等。这么多服务一起,备份和迁移都不方便。为了避免这个问题,决定将gitlab进行docker化部署。所有服务组件都在一个docker容器里面,只需将重要的配置、repo数据等挂载在宿主机上保存。平时只要备份挂载的数据目录即可,另外,如果需要迁移,也只需把数据目录拷贝到其它服务器,通过docker容器运行即可。 我使用的gitlab镜像是从docker公共仓库上下载的gitlab/gitlab-ce,里面包含了需要的所有组件服务,只要这一个镜像即可(当时GitLab的版本是8.7.5)。 1 容器的运行命令 容器的运行其实很简单,但刚开始也折腾了许久才让它按照自己想要的方式跑起来。 docker run -- name = 'gitlab-ce' -d \ -p 10022 : 22 -p 80 : 80 \ -- restart always \ -- volume / data /gitlab/config:/etc/gitlab \ -- volume / data /gitlab/logs:/ var / log /gitlab \ -- volume / data /gitlab/ data :/ var /opt/gitlab \ gitlab

centos7下部署Docker+Jenkins+Gitlab+Golang持续集成环境

 ̄綄美尐妖づ 提交于 2019-12-04 10:32:59
前言 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。 通俗的讲,持续集成就是利用Jenkins、Docker、Gitlab等自动化工具,按照一定规则和流程,代替人工实现代码检测,构建等操作,加快项目迭代。 具体安装配置步骤如下: 安装docker Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)。 社区版:免费 企业版:收费,注重安全。 这里安装免费版,安装方法可参考 https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce 1、安装所需的包。yum-utils提供了yum-config-manager 效用,并device-mapper-persistent-data和lvm2由需要 devicemapper存储驱动程序。 yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 2、使用以下命令设置稳定存储库。 yum-config-manager

docker容器里面安装gitlab

半世苍凉 提交于 2019-12-04 09:18:15
下载gitlab: sudo docker pull gitlab/gitlab-ce:latest 安装启动: sudo docker run –detach \ –hostname gitlab.example.com \ –publish 443:443 –publish 80:80 –publish 22:22 \ –name gitlab \ –restart always \ –volume /srv/gitlab/config:/etc/gitlab \ –volume /srv/gitlab/logs:/var/log/gitlab \ –volume /srv/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest 配置邮箱: external_url ‘ http://xx.xx.xx.xx ’ gitlab_rails[‘gitlab_ssh_host’]=’xx.xx.xx.xx’ gitlab_rails[‘gitlab_shell_ssh_port’]= 10022 gitlab_rails[‘smtp_enable’] = true gitlab_rails[‘smtp_address’] = “smtp.163.com” gitlab_rails[‘smtp_port’] = 25 gitlab