在windows环境下,旧版本的Rmagick安装完gem后,需要运行一个postinstall.rb来设置windows字体等。新版本的Rmagick没有这个步骤,代替是安装ImageMagick。我按照README安装成功后,在rails中使用还是出现无法读取字体的错误,忍无可忍又换了旧版本的Rmagick,没想到跟ruby的解释器版本不一致,render templage的时候出现parse error类型的错误。认真比对了下新老版本的差别,原来旧版本的Rmagick在Config目录下多了个type-windows.xml来设置windows字体,在此记录下正确的安装方法:
1.到http://rubyforge.org/frs/?group_id=12&release_id=8170,下载RMagick-1.14.1_IM-6.3.0-7-Q8.zip
2.解压后在目录执行gem install rmagick-1.14.1-win32.gem
3.最后,双击ImageMagick-6.3.0-7-Q8-windows-dll.exe安装ImageMagick
4.将ImageMagick的安装目录加进环境变量path,如果有的话就不用了
5.最后一步,将附件中的type-windows.xml拷贝进ImageMagick安装目录下的config目录,比如E:\ImageMagick-6.3.0-Q8\config,修改type.xml,原来是:
代码
<typemap>
<include file="type-ghostscript.xml" />
</typemap>
修改为:
代码
<typemap>
<include file="type-windows.xml" />
<!-- <include file="type-ghostscript.xml" /> -->
</typemap>
1.在windows上安装Rmagic,如果你是通过gem安装的,
require ’Rmagic’
要修改为:
require ’rubygems’
require ’Rmagick’
才能正确引入。
2.网上那个例子,画布是使用Rmagic内置的图像格式,Rmagic内置的图像格式还有:
gradient*
梯度,比如gradient:red-blue
granite
花岗石,比如: "granite:"
.
logo
logo型的图像. 如: "logo:"
,后面会多显示一个五角星^_^
netscape
非常漂亮的彩条。如: "netscape:"
null*
空白 使用方式: "null:"
rose
玫瑰 使用方式 : "rose:"
xc*
设置一个背景色,比如”xc:green”
一个修改的例子,在rails的models下存为noisy_image.rb,在Controller就可以这样调用NoisyImage.new(4) :
ruby 代码
- require 'rubygems'
- require 'Rmagick'
- class NoisyImage
- include Magick
- attr_reader :code, :code_image
- Jiggle = 15
- Wobble = 15
-
- def initialize(len)
- chars = ('a'..'z').to_a - ['a','e','i','o','u']
- code_array=[]
- 1.upto(len) {code_array << chars[rand(chars.length)]}
- granite = Magick::ImageList.new('xc:
- canvas = Magick::ImageList.new
- canvas.new_image(32*len, 50, Magick::TextureFill.new(granite))
- text = Magick::Draw.new
- text.font_family = 'times'
- text.pointsize = 40
- cur = 10
-
- code_array.each{|c|
- rand(10) > 5 ? rot=rand(Wobble):rot= -rand(Wobble)
- rand(10) > 5 ? weight = NormalWeight : weight = BoldWeight
- text.annotate(canvas,0,0,cur,30+rand(Jiggle),c){
- self.rotation=rot
- self.font_weight = weight
- self.fill = 'green'
- }
- cur += 30
- }
- @code = code_array.to_s
- @code_image = canvas.to_blob{
- self.format="JPG"
- }
- end
-
- end
-
3.与rails应用的结合,和一般的验证码原理一样,将产生的随机数存储在session或者request范围内,提交的时候进行比较验证即可。比如产生图片的时候将随机字母存储在session[:code]中:
def register
session[:noisy_image] = NoisyImage.new(4) #生成一个有4字符的图片
session[:code] = session[:noisy_image].code
end
验证的时候,比较提交的type_code与session[:code]即可,为了安全性考虑,最好还是不考虑使用客户端验证。
def code_check
if params[:code]!=session[:noisy_image].code
render_text "<script>document.getElementById('r_form').code.focus();</script> 验证码错误!"
else
render_text ""
end
end
controller.rb具体代码如下:
java 代码
- class UserController < ApplicationController
- model:noisy_image
- def code_check
- if params[:code]!=session[:noisy_image].code
- render_text "<script>document.getElementById('r_form').code.focus();</script> 验证码错误!"
- else
- render_text ""
- end
- end
- def register
- session[:noisy_image] = NoisyImage.new(5) #生成一个有5字符的图片
- session[:code] = session[:noisy_image].code
-
- end
-
- def code_image
- image = session[:noisy_image].code_image
- send_data image, :type => 'image/jpeg', :disposition => 'inline'
- end
- end
在页面显示图片,类似servlet一样直接调用Controller的action:
在register.rhtml中加入以下代码:
ruby 代码
ruby 代码
分享到:
- 2007-09-04 21:30
- 浏览 3864
- 评论(1)
- 论坛回复 / 浏览 (2 / 3425)
- 查看更多
相关推荐
在Ruby on Rails(Rails)框架中,验证码是一种用于防止恶意自动化的工具,它通常用于注册、登录和其他敏感操作,以确保只有人类用户能够执行这些操作。在这个实例中,我们将探讨如何在Rails应用中实现验证码功能。 ...
综上所述,这个项目是一个使用Ruby on Rails开发的Web应用,它利用Twilio API实现短信发送功能。开发者需要对Ruby、Rails以及Twilio API有一定的了解,同时,可能涉及到前端表单验证、数据库交互、路由配置、控制器...
未维护Kekocho现场版TLDR; Kekocho是一个完全响应的单页应用程序(SPA)Quora克隆,是一个...技术: - Ruby on Rails- React- Redux代管Kekocho托管在heroku上。 根据heroku.com的说法,“ Heroku是一个平台即服务
在本文中,我们将深入探讨如何使用Ruby on Rails(Rails)框架构建一个简历系统。Rails是一个流行的Web应用程序开发框架,它遵循MVC(模型-视图-控制器)架构模式,简化了开发过程。以下是对标题和描述中涉及的关键...
【ror-codelit-landing:基于 Ruby on Rails 的登陆页面】是一个使用 Ruby on ...通过分析项目源码,我们可以深入理解 Ruby on Rails 如何与 JavaScript 配合构建现代 Web 应用,以及如何设计和实现一个安全的登录系统。
在Ruby on Rails框架中,构建用户登录和注册功能是Web应用程序开发中的常见任务。Rails提供了许多内置工具和库,使得这个过程相对简单高效。在这个"rails登陆注册"的主题中,我们将探讨如何在Rails应用中实现用户...
一个插件,可以使在Rails中创建负验证码的过程更加轻松 1.传输中未加密的数据 所有敏感数据(例如,登录凭据,PII,公司数据)在移动时均应进行加密或哈希处理。 通过SSL提供安全的连接。 确保Rails config.force_...
其中,Macaron是一个非常流行的MVC Web框架,它借鉴了Ruby on Rails的设计理念,提供了丰富的中间件和插件支持,使得开发者可以便捷地构建高效、可维护的Web服务。而`Package captcha`就是专门为Macaron框架设计的一...
Laravel由Taylor Otwell创建,其设计灵感来源于Ruby on Rails。Laravel的核心特性包括艺术化的路由、简单的数据库迁移系统、强大的Eloquent ORM(对象关系映射)、方便的单元测试以及一套全面的工具,如Artisan...
PHP语言下非常优秀的MVC框架,其设计理念来自于Ruby On Rails框架,尤其适合中小型网站的开速开发。 本例子中包含了使用CAKEPHP中最基本的入门的例子,包括数据的增删改、查询、分页、验证码功能,基本的登录验证,...
在实现"sms_confirmable"模块时,首先需要集成一个短信服务提供商,如Twilio、Nexmo或SendGrid,这些服务商提供了API供开发者调用,用于发送和接收短信。在Rails应用中,你需要配置相应的API密钥和服务端点。 在...
- 使用Node.js、Django、Ruby on Rails等后端框架处理注册请求,验证数据并保存至数据库。 - 数据库设计:考虑如何设计用户表,确保数据安全性和一致性。 8. **异常处理**: - 错误提示:当用户输入不符合要求时...
在实际应用中,这款模板可以与后端框架(如PHP、Node.js、Django或Ruby on Rails)结合,通过AJAX技术实现无刷新的登录验证,提供更加流畅的操作流程。同时,配合服务器端的安全措施,如CSRF令牌、数据加密等,确保...
本篇文章主要介绍了一种在Ruby on Rails搭建的博客应用中屏蔽垃圾留言的简单方法,无需使用验证码,而是巧妙利用JavaScript来实现。 垃圾留言通常由自动化程序批量发送,这些程序无法执行网页上的JavaScript代码。...
该项目是通过引导的。... 使用AJAX请求获取数据与API后端集成节点Ruby on Rails 在开发中代理API请求配置代理后出现“无效的主机头”错误手动配置代理配置WebSocket代理在开发中使用HTTPS 在服务器上生成动态<met
文档中包含了对一些特定安全漏洞的月报分析,例如Ruby on Rails动态渲染远程代码执行漏洞(CVE-2016-0752)、Python特性在Jinja2模板中的远程代码执行、WTForms URL XSS漏洞、Xstream反序列化漏洞等。这些漏洞分析...
在构建网站的过程中,源码是实现功能和设计的基础。源码是编程语言编写的文本...在实际项目中,还需要不断学习和适应新的技术和趋势,如前端框架React和Vue.js,以及后端框架Express和Ruby on Rails等,以保持竞争力。