- 浏览: 1311556 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (732)
- Java_about (146)
- Spring_Hibernate_Struts_OpenSource (27)
- linux_unix (62)
- life_sth (22)
- js_css_html_xml_nodejs (69)
- design_pattens (1)
- Perl (8)
- php_ecshop (4)
- DB_Mysql_Oracle_Informix_SqlServer (43)
- JSTL (8)
- Testing_自动化测试 (42)
- DB_ID_UUID (4)
- SEM_SEO (1)
- english_study_improvement (4)
- SVN_Git (9)
- WebService_SOA_CloudComputing (3)
- E-Commerce (1)
- Lucene_Solr (7)
- others (2)
- Regex (2)
- tomcat_jetty (8)
- zeroc-ice (1)
- java_excel (5)
- ant_maven_gradle (5)
- Unity_VR_AR_C# (2)
- jmeter (1)
- XPath_dom4j (1)
- Ruby_and_Rails (68)
- write_a_rails (17)
- manage_and_team (1)
- getting_real (1)
- ubuntu (20)
- git_and_git_flow (7)
- TODO (1)
- PM_design (2)
- Python_and_Django (8)
- NoSql_mongo_redis (24)
- C/C++ (3)
- vi_vim_gvim (0)
- c#_.Net_windows编程_dll (10)
- Php_and_Yii (9)
- Android_IOS (31)
- Mysql (5)
- sa_运维_network_硬件 (37)
- lua (2)
- c_cpp_VisualStudio (21)
- 硬件-RM-Arduino (6)
最新评论
-
shenkun58:
...
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
liaojia1:
正解,感谢
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
flingfox63:
谢谢分享,电脑上有IPV6,导致了Guard启动不了……
ruby错误解决: Address family not supported by protocol - connect(2) -
c39274936:
s = "hello_world_ruby" ...
驼峰格式和下划线格式转换_translation between camel and snake format -
yfj300:
学习了学习了学习了学习了
硬盘基本知识(磁道、扇区、柱面、磁头数、簇、MBR、DBR)
一。基础知识:实例变量的特殊性:
ruby中的实例变量,是在实例变量的表中去寻找的。这样,一个@name在没有定义的时候,寻找的结果是nil,而不是异常。
但是,如果没有定义类变量@@buffer,则会抛出异常。
class MAttrAccessorTest #ok~ puts @name #=>nil #ERROR puts @@buffer #=>uninitialized class variable @@aaa in MAttrAccessorTest (NameError) end
二。attr_accessor,自动给实例变量加入get set 方法
例子:
class AttrAccessorTest attr_accessor :name, :age #get method def love @love end #set method def love=(love) @love = love end end
输出:
user = AttrAccessorTest.new
user.name = "June"
puts user.inspect
puts user.age #=>nil
puts user.inspect
user.age = 29
puts user.age
puts user.inspect
三。mattr_accessor :user_buffer
这个方法会在module中定义一个类变量:@@user_buffer;
同时定义对这个类变量的get,set方法,注意是实例方法。
这样,当包含这个模块的时候,会有@@user_buffer这个类变量,和get/set方法。
因为类变量是给所有实例共享的,所以某个实例修改这个类变量后,其他实例访问到的类变量也发生变化了。
例子:
module MAttrAccessorTest mattr_accessor :user_buffer #这个时候这里不会报错了!!! puts @@user_buffer end class AttrAccessorTest include MAttrAccessorTest end user1 = AttrAccessorTest.new user2 = AttrAccessorTest.new puts "user1.user_buffer = #{user1.user_buffer.inspect}" puts "user2.user_buffer = #{user2.user_buffer.inspect}" user1.user_buffer = [] user1.user_buffer << "Fantaxy" puts "user1.user_buffer = #{user1.user_buffer.inspect}" puts "user2.user_buffer = #{user2.user_buffer.inspect}" user2.user_buffer << "June" puts "user1.user_buffer = #{user1.user_buffer.inspect}" puts "user2.user_buffer = #{user2.user_buffer.inspect}"
输出:
nil
user1.user_buffer = nil
user2.user_buffer = nil
user1.user_buffer = ["Fantaxy"]
user2.user_buffer = ["Fantaxy"]
user1.user_buffer = ["Fantaxy", "June"]
user2.user_buffer = ["Fantaxy", "June"]
四。cattr_accessor :user_buffer
同mattr_accessor,只不过是使用在了类中。
例子:
class AttrAccessorTest mattr_accessor :user_buffer #这个时候这里不会报错了!!! puts @@user_buffer end user1 = AttrAccessorTest.new user2 = AttrAccessorTest.new puts "user1.user_buffer = #{user1.user_buffer.inspect}" puts "user2.user_buffer = #{user2.user_buffer.inspect}" user1.user_buffer = [] user1.user_buffer << "Fantaxy" puts "user1.user_buffer = #{user1.user_buffer.inspect}" puts "user2.user_buffer = #{user2.user_buffer.inspect}" user2.user_buffer << "June" puts "user1.user_buffer = #{user1.user_buffer.inspect}" puts "user2.user_buffer = #{user2.user_buffer.inspect}" 输出: nil user1.user_buffer = nil user2.user_buffer = nil user1.user_buffer = ["Fantaxy"] user2.user_buffer = ["Fantaxy"] user1.user_buffer = ["Fantaxy", "June"] user2.user_buffer = ["Fantaxy", "June"]
输出:
nil
user1.user_buffer = nil
user2.user_buffer = nil
user1.user_buffer = ["Fantaxy"]
user2.user_buffer = ["Fantaxy"]
user1.user_buffer = ["Fantaxy", "June"]
user2.user_buffer = ["Fantaxy", "June"]
五。class_inheritable_accessor
不要使用这个为好:
#1,貌似有bug
#2,晦涩且复杂度高,容易出错
class Parent class_inheritable_accessor :name, :age self.name = "Human" #注意这里必须先赋值,否则就不灵了哦,请对比:superclass_delegating_accessor self.age = "2000_000 years" def to_s "name = #{name}, age = #{age}" end end class Child < Parent end parent = Parent.new puts "parent: #{parent}" parent.name = "JRuby Programmer" parent.age = "3 years ago" puts "parent: #{parent}" puts "----" child1 = Child.new child2 = Child.new puts "child1: #{child1}" puts "child2: #{child2}" puts "----" child1.name = "Programmer" child1.age = "100 years ago" puts "child1.name = #{child1.name}, child1.age = #{child1.age}" puts "child2.name = #{child2.name}, child2.age = #{child2.age}" puts "----" child2.name = "Java Programmer" child2.age = "From 1991" puts "child1.name = #{child1.name}, child1.age = #{child1.age}" puts "child2.name = #{child2.name}, child2.age = #{child2.age}"
六。superclass_delegating_accessor
这个也被rails3废弃了。
附:
mattr_accessor和cattr_accessor源码简析:
#1 在Class中加入了实例方法:mattr_accessor/cattr_accessor
#2 这些实例方法对于每个类来说,属于类方法
#3 这些类方法能在类的作用域内使用,格式如:mattr_accessor :user_buffer, :visit_buffer
#4 这些方法本身使用class_eval/module_eval往类中加入实例方法,即get/set方法
#5 这些get/set方法操作的变量都是类变量,能被其所有类和实例共享
另外:
如果使用:instance_writer => false 则表示关闭实例对类变量的写权限
例子: mattr_accessor :user_buffer, :instance_writer => false
+
+
+
*
+
+
+
发表评论
-
ruby计算平方和开方_n次方n次幂
2022-06-28 21:52 655= = = ruby计算平方和开方 3 ** 2#= ... -
Ruby发送HTTP请求
2015-07-21 18:06 1167Ruby使用HTTP协议发送请求的方法备忘。 好像这 ... -
invalid byte sequence in GBK”问题 invalid byte sequence in UTF-8”问题
2015-07-03 15:11 2861碰见错误: test.rb:8:in `ma ... -
Ruby1.9之字符串内编码和外编码
2015-07-02 17:52 1282这里的文章很不错的么:Rubyist http://ru ... -
DevKit介绍和安装in railsInstaller
2015-05-26 17:01 2636DevKit介绍和安装in railsInstaller ... -
Rails_migrations中使用mysql的bigint
2014-09-30 14:32 1009From:http://rubyer.me/blog/468 ... -
Rails外如何启动rails的类自动加载_activates autoloading using ActiveSupport 3.x
2016-06-22 12:08 658The following cod ... -
如何在rails里打开gem里面的类_为何有时候不生效
2014-09-02 21:55 956在rails里面打开某个gem的类,补充一下等等,也 ... -
ruby的加载机制和rails_自动加载机制_对比
2014-09-02 16:51 1590prefer:http://urbanautomat ... -
Rails源码阅读(13)rails中的autoload和ruby的autoload
2014-07-30 17:13 1965Rails源码阅读(13)rails中的autoload和 ... -
Rails中命名路由的区别***_url与***_path
2014-07-29 16:37 1087Rails中命名路由的区别***_url与***_path ... -
ruby_gem安装_切换指定不同的源
2014-07-20 18:09 1156from:http://www.hiceon.com/to ... -
Ruby 的文件操作_不断总结
2014-07-11 11:55 1193一、用文件和目 ... -
Rails源码阅读(12)叫Rails的模块module_Rails常量使用
2014-07-02 09:35 1092The module nams "Rail ... -
注册邮件中的链接无host
2014-05-19 14:47 634在注册邮件中用命名路由的xxx_url不起作用,导致注 ... -
每个命令都有bundle exec的麻烦
2014-04-18 17:33 1433问题: 每次都得搞这个东西bundle exec放在 ... -
关于favicon.ico的报错:RoutingError
2014-03-31 14:45 1970错误: ActionController::Routin ... -
rbenv_安装太慢_解决办法
2014-03-31 13:51 2192rvm做了很多“不为人知”的事情,而且做的太 ... -
配置sunspot tomcat结合sunspot_rails
2014-02-26 10:58 901这个sunspot的东西还是有不少缺点的。 ht ... -
RubyOrRails_使用技巧_收集
2013-11-09 14:39 1083#link_to not working in sc ...
相关推荐
`weixin_rails_middleware` 是一个开源的 Ruby 框架中间件,设计用于帮助开发者轻松地在 Rails 应用程序中集成微信服务。这个中间件提供了与微信API交互的功能,包括验证微信服务器的请求、处理用户消息、以及发送...
rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器 Rails 语义记录器 语义记录器用语义记录器替代 Rails 缺省记录器。http://github.com/rocketjob/rails_semantic_logger文档有关完整文档...
rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...
"inspinia admin - v2.5 Rails_Full_Version" 是一个基于Rails框架构建的后台管理系统的完整版本。这个系统采用流行的Inspinia Admin模板,提供了丰富的功能和自定义选项,旨在帮助开发者快速构建高效、现代且用户...
在Rails_Full_Version压缩包中,包含了完整的源代码和必要的资源文件,开发者可以通过解压并导入到Rails项目中,按照官方文档进行配置和定制。同时,这个版本可能还包含了升级记录、更改日志和可能的bug修复,以保证...
《敏捷Web开发与Rails》第三版是一本深入探讨Ruby on Rails框架在敏捷软件开发方法论下的应用指南。本书由多位知名作者共同编写,包括Sam Ruby、Dave Thomas、David Heinemeier Hansson等,他们都是在Ruby社区内享有...
rails_best_practices rails_best_practices是用于检查Rails代码质量的代码度量工具。 它支持以下ORM / ODM: 活动记录 蒙古型 mongomapper 以及以下模板引擎: erb 哈姆 减肥 拉布尔 rails_best_practices...
介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...
本文将详细探讨其在Rails框架下的种子项目(Rails_Seed_Project),旨在帮助开发者更好地理解和运用这一强大的工具。 首先,我们来了解一下“Inspinia Admin”。这是一款基于Bootstrap 3构建的响应式后台模板,提供...
InspiniaAdmin 2.5 Rails_Seed_Project是一款基于Bootstrap框架的高级管理模板,专为Ruby on Rails开发者设计,旨在加速Web应用程序的开发过程。这个项目作为种子启动器,提供了完整的后台管理界面,包括丰富的UI...
《深入解析bhl_rails_solr源码》 在当今的Web开发领域,Rails框架以其高效、简洁的设计理念,深受开发者喜爱。同时,Solr作为一款强大的全文搜索引擎,被广泛应用于各类复杂的数据检索场景。当这两者结合时,便诞生...
RUBY的经典之作,对其在RAILS下开发写得很详细
接着,在需要使用富文本编辑器的地方,比如文章或博客的模型中,设置相应的数据库字段类型为 text,并在视图文件中使用 `rails_kindeditor` 提供的 helper 方法来渲染编辑器。 集成过程中,你可能需要关注以下几个...
Rails_3_Cheat_Sheets.pdf
gem 'rails_admin_content_builder' 运行生成器并进行迁移 rails g rails_admin_content_builder rake db:migrate 在app / assets / application.scss中添加样式 * = require rails_admin_content_builder 用法 ...
InspiniaAdmin 2.5 Rails_full_version
本资料“RestFul_Rails_Dev_pdf_v_0.1.zip”包含了《RESTful Rails Development》的翻译版,将深入探讨如何在Rails中实现RESTful的设计模式。 首先,RESTful设计的核心概念是资源(Resources)。在Rails中,资源...
默认引导程序3 rails_admin主题的现代替代。 它提供新闻颜色,调整和全新的树状视图菜单。 您可以将其派生并根据需要更改variables.scss ! 宝石文件 gem 'rails_admin_rollincode' , '~> 1.0' gem 'rails_admin'...