<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>-Flyぁ梦- &#187; PHP</title>
	<atom:link href="http://blog.11034.org/tag/php/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.11034.org</link>
	<description></description>
	<lastBuildDate>Sun, 22 Jun 2025 08:59:05 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>ruby on rails</title>
		<link>http://blog.11034.org/2014-07/ruby_on_rails.html</link>
		<comments>http://blog.11034.org/2014-07/ruby_on_rails.html#comments</comments>
		<pubDate>Mon, 07 Jul 2014 13:51:26 +0000</pubDate>
		<dc:creator><![CDATA[-Flyぁ梦-]]></dc:creator>
				<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.11034.org/?p=2252</guid>
		<description><![CDATA[工作需求，开始写ruby，因为基于web也就自然用上了rails。就这样开始接触ruby on rails，在 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>工作需求，开始写ruby，因为基于web也就自然用上了rails。就这样开始接触ruby on rails，在已有代码的基础上很快就能上手开发了。刚开始对ruby可能有各种吐槽，不过写习惯了之后真心觉得ruby语言本身挺不错的，比Python的语法舒服多了呢。</p>
<p><span id="more-2252"></span></p>
<h2>刚开始</h2>
<p>安装ruby真的够麻烦！装Java只要双击JDK然后配置环境变量即可；装Python只要双击python.msi然后配置环境变量即可；写这篇文章的时候我已经忘了怎么安装ruby了&#8230;只记得很麻烦，倒腾了很久！ <img src="http://blog.11034.org/wp-includes/images/smilies/icon_evil.gif" alt=":evil:" class="wp-smiley" style="height: 1em; max-height: 1em;" />  而且安装ruby的mysql驱动更是麻烦，win至今没装上，linux的也很麻烦！</p>
<p>ruby语言本身相比于其他脚本语言的确难很多，语法略晦涩难懂。</p>
<p>和Python类似，改了很多关键字，让熟悉静态语言的编程者不太习惯，尤其是elsif；next取代了continue；rescure取代了catch</p>
<p>ruby的对象在外部，没有“属性”这个概念，只有方法！只有在类内部才有属性和本地变量。惊呆了 <img src="http://blog.11034.org/wp-includes/images/smilies/icon_eek.gif" alt="8-O" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>ruby的拟态函数，看着就像一条命令，着实让新手期的我非常困惑，一个不带()的函数名加一个空格后的参数；完全找不到函数的定义，可能在某些module中，可能根本没有函数体是个用rails的has_many或者named_scope动态定义的函数&#8230;模块定义的函数，实例函数和静态函数也傻傻分不清楚。 <img src="http://blog.11034.org/wp-includes/images/smilies/icon_twisted.gif" alt=":twisted:" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>虽说Ruby和Java一样是纯OOP的语言，但是OOP的特性又很不一样，Ruby甚至不怎么推荐OOP的做法。</p>
<h2>渐渐地</h2>
<p>有点喜欢ruby了</p>
<ul>
<li> 函数名不带括号感觉很省事，导致写js的时候老忘了括号</li>
<li>类似 <code class="markdown_inline_code">return nil if params[:id] == nil</code>的一行代码，还可以 <code class="markdown_inline_code">render_error and return [ if xxx ]</code>，感觉太棒</li>
<li>遍历list/hash是那么方便</li>
<li>函数随意带block，自定义化程度非常高</li>
<li>rails是那么的强大，写web是那么的方便</li>
</ul>
<h2>rails和web</h2>
<p>写web，静态语言就Java（.Net不熟），脚本语言比较多：PHP、Python、Ruby，基本以这些为主流。Java不必说，太复杂开发效率低；PHP最灵活方便，但是没有一个好用强大的框架支持，功能复杂就显得力不从心；Python基于web写的不多，10年的时候用过Django，只能说一般般，现在不知道怎么样了，公司里也有同事在用Python写web，但感觉明显没有rails爽。</p>
<ul>
<li>rails的ORM强大到没有朋友</li>
<li>对ruby核心库的加强（ruby可以往原有类中直接加入API，不需要像Java中Apache类库的StringUtils那样用新的类）</li>
<li>view层面太方便的嵌套片段HTML；对ajax支持很好</li>
<li>debug方便，不仅方便地打印出所有SQL和模板加载，甚至有加载时间，优化起来很顺手</li>
</ul>
<p>深深的觉得，没有了rails，ruby真心没有太多闪光的地方&#8230;大概这也就是为什么ruby一直和rails绑定的关系吧</p>
<h2>ruby和rails的不足</h2>
<p>用到现在，受Java的影响，觉得ruby在以下几个方面用的还不是很灵活不习惯。很大程度上应该是自己对ruby和rails的了解还不够深入。</p>
<ul>
<li>继承体系：没有丰富的继承体系，OOP怎么体现优势？但是感觉rails中，写rails的Model时候，很难使用到完全自定义很灵活的继承体系。或者说Ruby的理念就不怎么喜欢用继承体系，更喜欢用Module的扩展甚至打开类技术。</li>
<li>数据结构库不丰富：只有内置的list/hash，对于常用的LinkedList、OrderedHashMap、HashSet等替代实现没有找到</li>
</ul>
<h4  class="related_post_title">看看 oop , PHP , Python</h4><ul class="related_post"><li>2014-09-10 -- <a target="_blank" href="http://blog.11034.org/2014-09/dotnet_csharp_excel.html" title="记C#和Excel开发">记C#和Excel开发</a></li><li>2012-12-06 -- <a target="_blank" href="http://blog.11034.org/2012-12/ac_automachine.html" title="一个OOP的AC自动机代码">一个OOP的AC自动机代码</a></li><li>2012-03-22 -- <a target="_blank" href="http://blog.11034.org/2012-03/java_util_collections.html" title="java.util中的集合类解析">java.util中的集合类解析</a></li><li>2010-11-17 -- <a target="_blank" href="http://blog.11034.org/2010-11/python2x_first_impression.html" title="Python2.x的第一印象">Python2.x的第一印象</a></li><li>2010-09-29 -- <a target="_blank" href="http://blog.11034.org/2010-09/wp-sns-share_add_tinyurl.html" title="wp-sns-share-1.2，增加tinyurl功能">wp-sns-share-1.2，增加tinyurl功能</a></li></ul><h4 class="related_post_title">看看 ruby on rails </h4><ul class="related_post"><li>2015-08-12 -- <a target="_blank" href="http://blog.11034.org/2015-08/rails_nginx.html" title="Liunx下搭建Rails和Nginx环境">Liunx下搭建Rails和Nginx环境</a></li><li>2015-04-09 -- <a target="_blank" href="http://blog.11034.org/2015-04/json_ascii.html" title="JSON中出现解析错误的原因之一：不可打印字符">JSON中出现解析错误的原因之一：不可打印字符</a></li><li>2014-12-21 -- <a target="_blank" href="http://blog.11034.org/2014-12/ruby_encoding.html" title="Ruby字符串的编码">Ruby字符串的编码</a></li><li>2014-10-25 -- <a target="_blank" href="http://blog.11034.org/2014-10/linux_timeout.html" title="linux的timeout处理wkhtmltopdf进程超时">linux的timeout处理wkhtmltopdf进程超时</a></li><li>2014-10-04 -- <a target="_blank" href="http://blog.11034.org/2014-10/rails-has_many.html" title="Rails中has_many等的原理">Rails中has_many等的原理</a></li>]]></content:encoded>
			<wfw:commentRss>http://blog.11034.org/2014-07/ruby_on_rails.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
