
Rails
文章平均质量分 50
李小西033
这个作者很懒,什么都没留下…
展开
-
使用graphviz图形化rails项目的gem依赖树
graphviz是一个开源的图片显示软件,本文描述如何利用graphviz将rails项目中gem的依赖树以图的形式展示出来。首先安装graphviz,我的系统是MacOS,可以用brew来安装brew install graphviz安装graphviz的ruby客户端gem install ruby-graphviz执行bundle viz生成依赖树图...原创 2019-12-27 17:38:45 · 235 阅读 · 0 评论 -
Rails中的raw、html_safe、sanitize
html_safe Marks a string as trusted safe. It will be inserted into HTML with no additional escaping performed. It is your responsibility to ensure that the string contains no malicious content. This原创 2016-10-25 19:22:39 · 1846 阅读 · 0 评论 -
Rails3.2.2到Rails4.0.0升级笔记
Rails框架引入方式在config/application.rb中进行引入Rails3.2.2中,引入方式require "active_record/railtie"require "action_controller/railtie"require "action_mailer/railtie"require "active_resource/railtie"require "spro原创 2016-10-20 15:29:21 · 1001 阅读 · 0 评论 -
Rails调试技巧
Rails源码的查看如下,pry中使用show-source命令查看指定参数源码show-source ActiveRecord::Generators::ModelGenerator原创 2016-10-21 21:42:32 · 833 阅读 · 0 评论 -
Rails3中的attr_accessible、attr_protected和Rails4+的强制参数
attr_accessible、attr_protected这两个方法最后可用的版本为rails3.2.13,用于在对model进行大量赋值时,通过指定白名单(attr_accessible)或黑名单(attr_protected)的方式,确保安全性。 attr_accessibleh和attr_protected区别的详细说明。在rails4中,对大量赋值的控制提升到了controller层,采原创 2016-09-14 11:32:42 · 994 阅读 · 0 评论 -
Rails应用使用跨域资源共享Cross-origin resource sharing
使用原因解决前端APP调用接口时的cors问题,否则在进行跨域调用时会报出406异常例如,使用浏览器模拟手机进行接口调用时,可观察到浏览器console信息如下: create_incident.html#:1 XMLHttpRequest cannot load http://localhost:3000/api/v1/app_versions/last?app_system=IOS. No原创 2016-09-01 09:52:22 · 1518 阅读 · 0 评论 -
Rails中的config.assets.debug配置项
被开发环境下的config.assets.debug配置项绊了一跤,特此记录。环境介绍Jquery: 1.9.1Bootstrap: 3.2.0Ruby: 2.0.0Rails: 3.2.2问题描述开发环境下,模态对话框modal会出现重复提交的情况,并且dropdown按钮失效。问题原因基于Rails的assets:pipeline特性,browser加载了合并之后的js文件applica原创 2016-08-22 10:09:24 · 844 阅读 · 0 评论 -
Rails3.1.1到Rails3.2.2升级笔记
升级前环境:Ruby版本:1.9.3Rails版本:3.1.1升级后环境:Ruby版本:2.0.0p598Rails版本:3.2.2项目文件结构变更将项目从Rails3.1.1升级到Rails3.2.2之后,报出了插件即将被废除的警告,因为在Rails4中将会把第三方插件从vendor下移除。Rails Guide中关于这两个版本的vendor文件夹描述如下:vendor Rails原创 2016-08-07 09:39:14 · 600 阅读 · 0 评论 -
Rails中scope和类方法的区别
原文:Active Record scopes vs class methods我们在项目中应该使用scopes还是类方法来保持统一性?网上关于这个问题的讨论有很多。经典的言论往往归结于“两者没有不同”或者“口味问题”。我相信这种说法,但还是想要展示这两者之间存在的略微差异。定义一个scope首先,让我们来深入了解一下scope的使用。在Rails 3中,可以使用以下两种方式定义scope:clas翻译 2016-04-09 22:06:38 · 4816 阅读 · 1 评论 -
Railties介绍
原文Railties是Ruby on Rails的内部引擎,在Rails项目加载的过程中,会对服务器进行配置和初始化等一系列复杂的设置。在真正启动服务器之前,需要进行一系列的配置。Railties是读取配置文件、创建项目并且连接Rails框架不同组件的引擎Railtie类Rails的主要组件都是Rails::Railtie的子类。举例来说,Active Record(对数据库进行查询)和Action翻译 2016-10-20 14:39:11 · 888 阅读 · 0 评论 -
在Mac OS X上安装PostgreSQL
介绍Postgres是一个强大的免费关系型数据库。自1995年问世以来,因为其出色的健壮性与强大的特性,Postgres获得了良好的发展势头。本文我们将介绍在Mac OS X上安装PostgreSQL的过程,并讲解如何在Ruby on Rails项目中配置它。使用Homebrew安装PostgreSQLHomebrew是一个OS X系统中流行的包管理器。使用Homebrew安装PostgreSQL的翻译 2017-01-05 22:54:30 · 13483 阅读 · 0 评论 -
使用rails new生成指定版本的项目
默认情况下,使用rails new <PEOJECT_NAME>时会基于最新版本的rails生成项目。当需要生成指定rails版本的项目时,可以按照以下步骤做:本文中,我需要基于rails 4.1.16生成新的项目执行gem list | grep rails查看当前安装的rails版本需要的4.1.16已经被安装尝试直接执行rails _4.1.16_ new <P...原创 2019-03-03 11:59:04 · 1170 阅读 · 0 评论 -
Rails的模型自关联
关于Rails的模型自关联有一个非常有意思的题目,大概是这样的:lisa = Person.create(name:'Lisa')tom = Person.create(name:'Tom',parent_id:lisa.id)andy = Person.create(name:'Andy',parent_id:lisa.id)tom.parent.name => 'Lisa'lisa.ch原创 2017-07-29 04:29:23 · 1195 阅读 · 0 评论 -
Rails Session工作原理
原文对于大部分静态站点来说这没什么大不了的。但是大部分应用需要储存一些关于用户的信息。可能是user id,偏好语言或者类似于是否在ipad上呈现应用的桌面版本这样的设置。 Session是储存这类信息的完美方案。为多个请求保留的小数据量信息。Session使用起来很简单:session[:current_user_id] = @user.id但是这其中蕴藏着一些魔法。什么是Session?Rai翻译 2016-10-26 18:34:25 · 2415 阅读 · 2 评论 -
Rails之关于时间(时区)
It’s About Time (Zones)这是时间系列的第一篇文章。第二篇的主题是 a case study in multiple time zones。Ruby提供了两个类来管理时间:Time和DateTime。Ruby1.9.3之后两者之间的区别越来越小。鉴于Time包含闰秒和夏令时的概念。本文中,我们将使用Time来举例。 TZInfo是一个时区库,提供不同时区的夏令时转换。它被封装成翻译 2017-06-28 14:50:48 · 2597 阅读 · 0 评论 -
Rails使用has_secure_password进行身份验证
原文:has_secure_password with Rails 4.1我刚刚用Rails 4.1创建了一个新项目,并且试用了has_secure_password,很酷的功能呢。 但愿你没有在数据库里直接存储明文密码!为了防治密码被窃取,数据库中存储的始终应该是某种形式的哈希值,而非明文密码。 有几个很棒的教程讲述如何以安全的方式哈希和存储密码。我自己用Ruby实现过几次。 更复杂一点的解翻译 2017-06-27 12:24:47 · 2362 阅读 · 0 评论 -
译:使用ActiveRecord Enums创建简单易读的属性
Creating Easy, Readable Attributes With ActiveRecord Enums设想一个问题的状态可能为“暂停”,“通过”或“标注”。或者一个电话号码可能是“家庭号码”,“办公号码”,“手机号码”或者“传真号码”(1982年的话) 有些模块需要这种类型的数据:只对应少许值的属性,并且这些值几乎永远不会改变。 如果使用纯Ruby的话,可以通过使用symbol来解翻译 2017-06-14 14:01:58 · 460 阅读 · 0 评论 -
Ruby中的nil?,empty?与Rails中的blank?,present?
[A concise explanation of nil v. empty v. blank in Ruby on Rails](https://stackoverflow.com/questions/885414/a-concise-explanation-of-nil-v-empty-v-blank-in-ruby-on-rails).nil?可以用在一切对象上,当对象为nil时,返回true翻译 2017-06-22 15:31:22 · 1660 阅读 · 0 评论 -
CarrierWave中的resize_to_fill,resize_to_fit和resize_to_limit
使用CarrierWave对Rails项目中的图片进行处理,resize_to_fill, resize_to_fit和resize_to_limit的区别经常容易忘记,本文就以图文实验的方式直观的记录其不同之处。实验原图:大小:1.1M 尺寸: 964*650 实验代码: version :fill do process :resize_to_fill => [250, 250]原创 2017-04-20 12:53:15 · 1437 阅读 · 0 评论 -
使用mina部署rails应用时遇到的问题们
无法从github拉取代码—–> Cloning the Git repository Cloning into bare repository ‘/home/XXX/app/scm’… Host key verification failed. fatal: Could not read from remote repository. Pleas原创 2017-04-10 14:01:04 · 765 阅读 · 0 评论 -
Rails配置项force_ssl与hsts
最近刚刚将一个项目设置为HTTP与HTTPS共存,在这过程中对Rails的配置项force_ssl有了更深的理解。force_ssl是什么force_ssl是什么呢?我们可以从以下三段Rails Guide中提及的force_ssl配置项信息中找到答案: config.force_ssl forces all requests to be served over HTTPS by using t原创 2017-01-09 23:10:08 · 1322 阅读 · 0 评论 -
Rails开发:Gem更换淘宝源
部署服务器时因为GFW的原因使用gem install XXX命令报错如下:ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)Errno::ECONNRESET: Connection reset by peer - SSL_connect (https://api.rubygems.org/quick/Marshal.原创 2015-07-18 09:48:41 · 3586 阅读 · 0 评论 -
Rails中Array转为ActiveRecord::Relation
将数组转为ActiveRecord::Relation是很常见的一个需求。例如,在我的项目中,从方法backup_projects中获取了数组形式的返回值。为了对该集合进行排序和分页,我需要将其转化为ActiveRecord::Relation形式。转化方法如下: project = Project.backup_projects project.map{|i| i.id} @projec翻译 2015-04-01 13:25:34 · 2634 阅读 · 0 评论 -
`gem install therubyracer` fails on Mac OS X Lion
gem install therubyracer -v ‘0.10.1’ 失败报错如下:clang: error: no such file or directory: '/Users/XXX/.rvm/gems/ruby-1.9.2-p320/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a’解决方式:brew tap homebrew/dupesbr原创 2015-03-23 12:34:36 · 1204 阅读 · 0 评论 -
Agile Web Development with Rails第十章笔记——任务E:更智能的购物车
本章内容:修改数据库模式与现有数据诊断和处理错误闪存日志迭代E1:创建更智能的购物车问题提出:保存与显示购物车中同一产品的数量解决方案:修改line_items表,添加描述数量的字段1、使用迁移修改数据库模式rails generate migration add_quantity_to_line_items quantity:integer修改刚刚生成原创 2013-06-03 16:43:19 · 1476 阅读 · 0 评论 -
Agile Web Development with Rails第九章笔记——任务D:创建购物车
本章内容:会话和会话管理添加模型间的关系创建一个按钮,可添加产品到购物车中迭代D1:寻找购物车将购物车放在数据库中,并在会话中存储该购物车的唯一标识符,cart.id。每当请求出现时,可以从会话中找到该购物车的标识,并用该标识在数据库中查找购物车。1、创建购物车rails generate scaffold cart2、应用迁移rake db:migra原创 2013-05-23 10:18:46 · 2280 阅读 · 0 评论 -
Agile Web Development with Rails第十二章笔记——任务G:付款
如标题所示,这一章的主要目的就是完成付款功能,整个任务由以下几个模块迭代完成。迭代G1:获取订单订单是商品项目及其购买交易的细节的集合,为了存储购买交易的细节,下面我们需要创建表orders。使用脚手架创建订单表:rails generate scaffold order name:string address:text email:string pay_type:string原创 2013-06-10 17:50:25 · 1453 阅读 · 0 评论 -
Agile Web Development with Rails第八章笔记——任务C:商品目录显示
接下来的任务是——创建简单的商品目录显示网页。迭代C1:创建商品目录清单1、创建控制器store前面已经通过脚手架创建了商品控制器,卖家可以用它来管理Depot应用程序。现在创建第二个控制器,它将用来与消费者进行互动,称为store。rails generates controller store index通过访问网址http://localhost:3000/store/i原创 2013-05-20 13:52:16 · 1179 阅读 · 0 评论 -
Agile Web Development with Rails第七章笔记——任务B:验证
在第六章的基础上,这一章的任务是使应用程序变得更加坚固——以确保数据中发生的错误永远都不会提交给数据库。迭代B:验证目标:1、字段的标题、描述以及图像的URL不是空的2、价格是一个有效的数字,且不少于0.013、标题在所有商品中是唯一的4、图像的URL看起来是有效的模型层是放置验证代码的理想位置。根据以上4点目标,在脚手架生成的模型层文件中做出相应修改。模型文件原创 2013-05-19 13:04:04 · 1109 阅读 · 0 评论 -
Agile Web Development with Rails第六章笔记——任务A:创建应用程序
看书效率比较低,很容易忘记前面的内容,从这章开始写读书笔记。希望可以早日上手Rails本章的主要任务是以增量式开发的方式创建应用程序Depot(任务A)。迭代A1:创建商品维护的应用程序创建能够对商品进行增删改的应用程序。商品属性products表:title(名称)、description(描述)、image(图)、price(价格)1、创建Rails应用程序创建名为de原创 2013-05-17 12:07:31 · 1432 阅读 · 0 评论 -
Ruby环境搭建与“Hello World”
Ruby的环境搭建比较简单,在http://rubyinstaller.org/downloads/可以得到Ruby的安装包,安装过程没什么问题。安装完成之后需要配置一下环境变量:在PATH中填入Ruby在本机的安装路径+bin即可。例如我填入的是E:\application\Ruby200\bin;。环境变量配置完成之后,命令行下输入ruby -v,若成功显示ruby版本,则ruby原创 2013-04-17 22:27:42 · 5973 阅读 · 0 评论 -
Ruby学习:计算器与猜数字游戏
安装完Aptana Studio 3才发现eclipse是有相关插件的,晕死,先用着Aptana Studio 3吧还是。为了尽快熟悉Ruby基本语法和开发工具的使用,先来两个弱智小程序练练手。计算器:puts "please input number1:"number1=getsputs "please input a operator(+、-、*、/):"op=gets原创 2013-04-21 11:01:48 · 2891 阅读 · 0 评论 -
Ruby的一些基础知识
接触Ruby的第二天,从下面这个小程序开始,了解一下Ruby的基础知识。C:\Users\hp>rubydef say_hello(name) result="hello,"+name return resultend#方法定义完成puts say_hello("lissdy")^Dhello,lissdy从上面的小Demo可以看出Ruby在语法方面:1原创 2013-04-19 09:59:14 · 1277 阅读 · 0 评论 -
Agile Web Development with Rails第十一章笔记——任务F:Ajax初体验
本章内容:使用局部模版呈现页面布局利用Ajax和RJS动态更新页面利用Script.aculo.us高亮变化隐藏和显示DOM元素测试Ajax更新本章目标:为购物车添加Ajax,把整个购物车显示在商品目录的侧边栏中,而不是独立的页面中,利用Ajax来更新侧边栏中的购物车信息。迭代F1:转移购物车将购物车界面转移到商品目录布局中。目前购物车的显示如下,获取购物车中的原创 2013-06-06 11:01:07 · 1940 阅读 · 0 评论 -
Rails中的Time.now与Time.zone.now
Rails中Time.now直接获取系统时区当前时间(本地电脑时间)Time.zone.now获取Rails中设定时区的当前时间例:config/application.rb中将时区设为东京时区config.time_zone = 'Tokyo'Time.now获取本地电脑的北京时间Time.zone.now获取之前设置好的东京时间原创 2014-03-14 14:27:22 · 1649 阅读 · 0 评论 -
rails自定义校验
当内建的校验 helpers 不能满足项目需求时,可以根据具体需求来编写自己的校验器或者校验方法。其中,当有比较通用的规则需要校验时,优先考虑使用自定义校验器.自定义校验器给需要校验的单独属性添加自定义校验器最便捷的方法是使用 ActiveModel::EachCalidator。这种情况下,自定义校验类必须实现一个 validate_each 方法,它接受三个参数:record,原创 2014-01-22 16:47:09 · 1302 阅读 · 0 评论 -
sidekiq异步处理任务
安装gem install sidekiq或修改Gemfile之后bundle installgem 'sidekiq'使用方法:1 定义异步处理worker类将worker类放置于app/workers class HardWorker include Sidekiq::Worker def perform(name, count)原创 2013-11-26 19:15:18 · 6919 阅读 · 2 评论 -
Railscasts #2 Dynamic find_by Methods 动态find_by方法
通过使用动态的find_all_by和find_by方法提高代码的可读性。Rails中的find方法非常有用,下面是一个Task模型,定义了两个方法分别寻找所有未完成的task和最后一个未完成的taskclass TaskController < ApplicationController def incomplete @tasks = Task.find(:all,翻译 2013-10-27 12:20:31 · 894 阅读 · 0 评论 -
Railscasts #1 Caching with Instance Variables缓存实例变量
class ApplicationController < ActionController::Base def current_user User.find(session[:user_id]) endend该方法用于获取当前用户,调用User的find方法传入会话中的user_id从数据库中获取当前登录用户实体,如果该方法被调用多次,就意味着需要访问多次数据库,我们通翻译 2013-10-21 21:36:44 · 761 阅读 · 0 评论 -
安装指定版本的Rails
整个Ubuntu系统的安装都参照该博客http://hbin.iteye.com/blog/1146748顺利进行,最后因为项目需要安装指定版本的Rails,安装指定版本Rails方法如下:gem install -v=3.1.1 rails原创 2013-08-17 19:42:40 · 2331 阅读 · 0 评论