- 浏览: 2533599 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
jsntghf:
peio 写道这个怎么运行?Ruby On Rails的环境搭 ...
多文件上传之uploadify -
peio:
这个怎么运行?
多文件上传之uploadify -
往事如烟1:
我的项目是自己init了一个原始的project,之后将ver ...
React Native热部署之CodePush -
jsntghf:
往事如烟1 写道我按照你的说明进行,发现app退出之后,在进入 ...
React Native热部署之CodePush -
往事如烟1:
我按照你的说明进行,发现app退出之后,在进入不正确,请问是什 ...
React Native热部署之CodePush
首先写一个类,用来封装获取系统平台以及浏览器信息的方法
class Info attr_accessor :env, :browser, :platform def initialize(request) self.env = request get_platform get_browser end protected #获取系统平台 def get_platform begin if self.env['HTTP_USER_AGENT'] =~ /Win/i self.platform = "Windows" elsif self.env['HTTP_USER_AGENT'] =~ /Mac/i self.platform = "Mac" elsif self.env['HTTP_USER_AGENT'] =~ /BSD/i self.platform = "FreeBSD"; elsif self.env['HTTP_USER_AGENT'] =~ /Linux/i self.platform = "Linux"; elsif self.env['HTTP_USER_AGENT'] =~ /SunOS/i self.platform = "Sun Solaris"; elsif self.env["HTTP_USER_AGENT"] =~ /iPhone/i self.platform = "iPhone"; else self.platform = nil end rescue self.platform = nil end end #获取浏览器信息 def get_browser self.browser = { :type => nil, :version => nil } begin #Internet Exlorer if self.env['HTTP_USER_AGENT'] =~ /MSIE/i && self.env['HTTP_USER_AGENT'].scan(/AOL|America Online Browser/i).empty? browser[:type] = "MSIE"; browser[:version] = self.env['HTTP_USER_AGENT'].scan(/MSIE ([\d\.]+)/i).to_s #Firefox/Firebird/Phoenix elsif self.env['HTTP_USER_AGENT'] =~ /Firefox|Firebird|Phoenix/i browser[:type] = "Firefox"; browser[:version] = self.env['HTTP_USER_AGENT'].scan(/[Firefox|Firebird|Phoenix].\/(\d.+)/i).to_s #Galeon elsif self.env['HTTP_USER_AGENT'] =~ /Galeon/i browser[:type] = "Galeon"; browser[:version] = self.env['HTTP_USER_AGENT'].scan(/Galeon\/([\d\.]+)/i).to_s #Safari elsif self.env['HTTP_USER_AGENT'] =~ /Safari/i browser[:type] = "Safari"; browser[:version] = '0' #Opera elsif self.env['HTTP_USER_AGENT'] =~ /Opera/i browser[:type] = "Opera"; browser[:version] = self.env['HTTP_USER_AGENT'].scan(/Opera[ |\/]([\d\.]+)/i).to_s #AOL/America Online Browser elsif self.env['HTTP_USER_AGENT'] =~ /AOL|America Online Browser/i browser[:type] = "AOL" browser[:version] = if self.env['HTTP_USER_AGENT'] =~ /AOL/i self.env['HTTP_USER_AGENT'].scan(/AOL[ |\/]([\d.]+)/i).uniq.to_s else self.env['HTTP_USER_AGENT'].scan(/America Online Browser ([\d\.]+)/i).to_s end #Camino elsif self.env['HTTP_USER_AGENT'] =~ /Camino/i browser[:type] = "Camino"; browser[:version] = self.env['HTTP_USER_AGENT'].scan(/Camino\/([\d\.]+)/i).to_s #Konqueror elsif self.env['HTTP_USER_AGENT'] =~ /Konqueror/i browser[:type] = "Konqueror"; browser[:version] = self.env['HTTP_USER_AGENT'].scan(/Konqueror\/([\d.]+)/i).to_s #K-Meleon elsif self.env['HTTP_USER_AGENT'] =~ /K-Meleon/i browser[:type] = "K-Meleon"; browser[:version] = self.env['HTTP_USER_AGENT'].scan(/K-Meleon\/([\d.]+)/i).to_s #Firefox BonEcho elsif self.env['HTTP_USER_AGENT'] =~ /BonEcho/i browser[:type] = "Firefox BonEcho"; browser[:version] = self.env['HTTP_USER_AGENT'].scan(/BonEcho\/([\d.]+)/i).to_s #Netscape elsif self.env['HTTP_USER_AGENT'] =~ /Netscape/i browser[:type] = "Netscape"; browser[:version] = self.env['HTTP_USER_AGENT'].scan(/Netscape\/([\d.]+)/i).to_s #PSP elsif self.env['HTTP_USER_AGENT'] =~ /PlayStation Portable/i browser[:type] = "PlayStation Portable (PSP)"; browser[:version] = self.env['HTTP_USER_AGENT'].scan(/PlayStation Portable\); ([\d\.]+)/i).to_s #PlayStation 3 elsif self.env['HTTP_USER_AGENT'] =~ /PlayStation 3/i browser[:type] = "PlayStation 3"; browser[:version] = self.env['HTTP_USER_AGENT'].scan(/PlayStation 3; ([\d\.]+)/i).to_s #Lynx elsif self.env['HTTP_USER_AGENT'] =~ /Lynx/i browser[:type] = "Lynx"; browser[:version] = self.env['HTTP_USER_AGENT'].scan(/Lynx\/([\d\.]+)/i).to_s else browser[:type] = nil browser[:version] = nil end rescue browser[:type] = nil browser[:version] = nil end end end
然后在application.rb中定义三个方法,分别用来获取浏览器的类型、版本以及系统平台
def which_browser get_data return session[:info][:browser_type] end def which_browser_version get_data return session[:info][:browser_version] end def which_platform get_data return session[:info][:platform] end protected def get_data if session[:info].blank? info = Info.new(request.env) session[:info] = {} session[:info][:browser_type] = info.browser[:type] session[:info][:browser_version] = info.browser[:version] session[:info][:platform] = info.platform end end
以下是具体调用方法:
def info which_browser #=> MSIE which_browser_version #=> 7.0 which_platform #=> Windows end
可以很容易的扩展Info类,从而增加新的功能。
发表评论
-
Redmine集成知识库
2013-08-26 22:25 33091、下载redmine的知识库插件:redmine_know ... -
Redmine集成SVN
2013-08-20 20:13 53971、进入redmine目录下的config目录,我的是/Ap ... -
Redmine集成CKEditor
2013-08-15 21:08 4419Redmine的文本格式默认只支持textile,对于普通 ... -
如何使用Assets Pipeline
2011-11-21 16:13 1992Rails 3.1之前,所有资源文件都放在public的子目录 ... -
Rails console显示执行的Sql语句
2011-11-18 08:49 1907调试Active Record时经常会用到rails cons ... -
migrate中使用bigint
2011-11-14 10:40 2058使用mysql时,integer最大是10位。如果想存储更大的 ... -
rails中使用UUID
2011-11-08 08:44 2741可以将uuid的包拷贝到vendor/plugins下,或者在 ... -
Rails里删除Prototype改用JQuery的方法
2011-11-02 10:55 1523首先在Gemfile中添加jquery的gem gem ... -
ActionView::Template::Error (***.css isn’t precompiled)
2011-10-24 11:10 2507升级到Rails 3.1后,当rails s -e produ ... -
Rails Bundle简介
2011-10-21 09:00 1585Rails 3开始使用bundle来管理项目的gem依赖。该命 ... -
非WEB程序中使用Active Record
2011-10-18 16:08 1461一、新建一个Ruby文件 require " ... -
Rails中使用多选框
2011-10-14 10:10 2324<%= select_tag("tag_ids ... -
Could not find a JavaScript runtime
2011-10-13 13:17 1686Rails3.1下报出下面的错误: /gems/exe ... -
通过POP3读取邮件
2011-10-06 01:36 1573require 'net/pop' pop ... -
观察者模式
2011-10-01 16:24 1545require 'observer' class ... -
ruby1.9的中文问题
2011-09-29 08:31 1841STATUS = { "0" =&g ... -
列出所有的控制器以及方法名
2011-09-27 10:43 1603controllers = Dir.new("#{R ... -
abort的使用
2011-09-22 13:30 1537很多人可能会这样用: def stop_error(m ... -
rails3中mysql2的安装
2011-09-20 16:01 2072rails3中默认的mysql适配器是mysql2,执行以下命 ... -
让查询变得更优雅
2011-09-19 20:19 1114RailsWhere可以让代码变得更简洁。 看一 ...
相关推荐
根据给定的信息,本文将详细解释如何通过 Ruby 语言来获取客户端...总之,通过 Ruby 获取浏览器类型和平台信息是一项非常实用的技术,它不仅可以帮助开发者更好地理解用户的需求,还可以提高 Web 应用的可用性和性能。
下面将详细介绍如何利用Python和Selenium库来获取浏览器窗口句柄以及进行窗口切换的具体方法。 #### 1. 基础概念 - **句柄(Handle)**:句柄是计算机编程中的一个术语,通常用来表示某个对象的唯一标识符。在本篇...
`User-Agent`通常包含了设备制造商、型号、操作系统版本以及浏览器信息,DeviceDetector则根据预定义的规则和模式来匹配这些信息。 该库的主要功能包括: 1. 设备识别:能够识别手机、平板、桌面电脑、智能电视等...
Selenium 的核心优势在于其跨浏览器和跨平台的能力,这意味着你可以在诸如Chrome、Firefox、Safari、Edge等不同浏览器上,以及Windows、Mac OS X或Linux等不同操作系统上运行相同的测试。 ### Selenium 的组件 1. ...
在个人健康档案系统中,Ruby可能负责处理数据的存储、用户认证、业务逻辑等后端任务。 JavaScript在前端的应用则更为广泛,它允许开发者在用户浏览器上动态更新页面,实现丰富的交互效果。在PHR系统中,JavaScript...
你可以从RubyInstaller的GitHub页面获取DevKit,按照官方文档的指示将其与你的Ruby安装关联起来。这通常涉及将DevKit的路径添加到环境变量PATH中,然后运行初始化脚本来绑定Ruby安装。 4. **Rails安装**:有了Ruby...
Ruby-2.5.0是Ruby编程...以上就是在CentOS 6.5上利用`ruby-2.5.0.tar.gz`安装Redmine的详细过程,过程中需要注意系统的兼容性、依赖的正确安装以及安全配置。理解这些步骤将有助于顺利部署和管理Redmine项目管理平台。
- **示例**:例如,在博客系统中,一篇文章可以有多个评论,这就是典型的“一对多”关系。 #### 四、查询 - **方法**:使用Active Record的方法来进行数据库查询,如`find`、`where`、`joins`等。 - **优化**:...
这个“基于Ruby on Rails的博客和新闻订阅系统”很可能是一个示例项目,旨在展示如何利用Rails框架来创建一个功能完备的在线平台,让用户能够发布博客文章、订阅新闻源,并进行相关的交互。 【描述】:“html5开发...
**Ruby Watir** 是一种用于网页自动化测试的工具库,它能够模拟用户在浏览器中的操作行为,如点击按钮、填写表单等,非常适合进行功能测试、回归测试和系统测试。 #### 二、安装Ruby Watir ##### 1. 安装Ruby环境 ...
标题中的“Ruby自动分级器”指的是一个使用Ruby编程语言开发的工具,它的主要功能可能是对文本内容进行自动分类或评级,比如对学生作文、新闻文章等进行自动评分或归类。这个工具结合了HTML可能意味着它可能包含一个...
- 确保您的系统中安装了Ruby和RubyGems。 - 通过命令行安装Watir和其驱动程序(以Selenium WebDriver为例,因为它支持多种浏览器): ```bash gem install watir-webdriver ``` 2. **编写第一个Watir脚本**: ...
安装完成后,可以使用以下命令来检查 Ruby 是否安装成功及版本信息: ```bash ruby -v ``` ##### 1.2 Hello World 程序 编写第一个 Ruby 程序,通常都是从最简单的 “Hello, World!” 程序开始。创建一个名为 `...
description '列出系统中的所有用户,包括基本信息' param :page, Integer, desc: '页码', required: false param :per_page, Integer, desc: '每页显示数量', required: false def index @users = User.all...
4. **组织和浏览离线文档**:生成的HTML文档可以放在本地文件系统中,通过浏览器访问。用户可以创建一个索引页面,方便按需查找特定模块或类的文档。 标签 "源码" 和 "工具" 提示了这个过程涉及到对源码的操作以及...
Ruby-Sprockets是一个强大的基于Rack的资源打包系统,主要设计用于简化Web应用程序中的静态资源(如JavaScript、CSS和图像)的管理和优化。在Rails框架中,Sprockets被广泛使用,它允许开发者以一种模块化和高效的...
3. **适应性强**:由于Watir支持多种浏览器,测试可以在不同的环境中进行,确保了Web应用的跨平台兼容性。 4. **开源社区支持**:Ruby和Watir都是开源项目,拥有活跃的社区,开发者可以获取到丰富的资源和帮助,...
Ruby-Shrimp是一个强大的工具,主要用于将网页内容转换为PDF文档,它基于PhantomJS,一个无头Webkit浏览器。PhantomJS是一个JavaScript驱动的浏览器,它允许开发者在没有实际图形界面的情况下运行页面,这对于自动化...
1. 下载Ruby的安装包:首先,你需要从官方或者其他可靠的来源获取适合你操作系统的Ruby安装程序。 2. 运行Setup:双击下载的安装文件,启动安装向导。 3. 同意许可协议:在欢迎界面后,点击“Next”,然后阅读并同意...