<?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>里克的自习室 &#187; plugins</title>
	<atom:link href="http://railser.cn/blog/tag/plugins/feed" rel="self" type="application/rss+xml" />
	<link>http://railser.cn</link>
	<description>关注Ruby和Rails的学习与开发</description>
	<lastBuildDate>Sun, 26 Feb 2012 12:20:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>acts_as_attachment和attachment_fu插件应用</title>
		<link>http://railser.cn/blog/acts_as_attachment-and-attachment_fu</link>
		<comments>http://railser.cn/blog/acts_as_attachment-and-attachment_fu#comments</comments>
		<pubDate>Fri, 25 Jan 2008 13:42:00 +0000</pubDate>
		<dc:creator>里克</dc:creator>
				<category><![CDATA[default]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rmagic]]></category>

		<guid isPermaLink="false">http://railser.cn/archives/acts_as_attachment-and-attachment_fu</guid>
		<description><![CDATA[写在前面 Rails插件，是学习Rails框架很好的教材。插件可以让你利用Ruby语言的特点，改进Rails框架代码，而不必去编辑它。比如acts_as_paranoid插件就是将Rails默认的Destroy功能进行了删除标记的改进。这里，Rails的Module和Class的学习，Mixin的学习对于理解Rails是相当重要的。 里克：我觉得想学习Rails插件，先需要看《Ruby for Rails》的第六章（模块和程序组织）和第十三章（Ruby动态特性）。 插件还可以让开发人员发布复用性强的应用，比如各种Acts_as插件。 插件是一种很好的Rails附加产品，通过对插件代码的学习，插件test的学习，可以很快的提升对Rails框架的理解。这对于学习其他框架也是有一定帮助的。 下面将详细的对工作中用到的两个插件进行笔记。 附件管理插件：acts_as_attachment和attachment_fu acts_as是一个庞大的插件家族，他们无比丰富的扩展了Rails的功能。acts_as_attachment插件是使一个Model具有插件上传，管理的功能，而不必去为全局建立一个公共的上传管理model[Intro to Acts As Attachment]。attachment_fu是acts_as_attachment的升级版，作者是Rick Olson，这个插件可以说在Rails plugins排行中进得了前三位的。 连接：10 Ruby On Rails Plugins You Should Be Using attachment_fu提供了全面的测试框架，并且提供了对ImageScience，RMagick，minimagick的支持。 acts_as_attachment的教程介绍 Intro to Acts As Attachment 一篇里简单的介绍了aaa的使用，按照里面的介绍就可以实现附件的上传了，我就是按照它的介绍实现了4Rails.cn的头像上传功能。不过这个插件的功能绝没这么简单。 Acts As Attachment Thumbnailing 一篇简单介绍了图片缩略图功能，这样就可以对上传的图片进行各种大小的缩略图生成了。 下面的内容是针对attachment_fu的。因为接口上没有做任何调整，只需将acts_as_attachment 改成 has_attachment，上面的教程依旧适用。 几个图片处理库 在attachment_fu的option中，可以声明 :processor ，指定图片处理库，这个包括ImageScience, Rmagick, 和MiniMagick，不指定将为默认安装的。 ImageScience：实现图片放缩的库，使用前需安装freeimage和rubyinline，RubyInline允许你在ruby代码中直接编写c/c++代码。 Rmagick：使用的很多，windows的安装有特定的版本需求，需要下载rmagick-win32最新版 [2.7.1 binary gem for Ruby 1.8.6]RMagick-2.7.1-ImageMagick-6.4.5-3-Q8.zip(08年12月17日更新)，这个对应的Ruby版本是1.8.6。里面已经放上了必须版本的ImageMagick和RMagick的gem，不用再找了。 [...]]]></description>
			<content:encoded><![CDATA[<p>写在前面</p>
<p>Rails插件，是学习Rails框架很好的教材。插件可以让你利用Ruby语言的特点，改进Rails框架代码，而不必去编辑它。比如acts_as_paranoid插件就是将Rails默认的Destroy功能进行了删除标记的改进。这里，Rails的Module和Class的学习，Mixin的学习对于理解Rails是相当重要的。<br />
里克：我觉得想学习Rails插件，先需要看《Ruby for Rails》的第六章（模块和程序组织）和第十三章（Ruby动态特性）。</p>
<p>插件还可以让开发人员发布复用性强的应用，比如各种Acts_as插件。</p>
<p>插件是一种很好的Rails附加产品，通过对插件代码的学习，插件test的学习，可以很快的提升对Rails框架的理解。这对于学习其他框架也是有一定帮助的。</p>
<p>下面将详细的对工作中用到的两个插件进行笔记。</p>
<p>附件管理插件：acts_as_attachment和attachment_fu<br />
acts_as是一个庞大的插件家族，他们无比丰富的扩展了Rails的功能。acts_as_attachment插件是使一个Model具有插件上传，管理的功能，而不必去为全局建立一个公共的上传管理model[<a href="http://weblog.techno-weenie.net/articles/acts_as_attachment">Intro to Acts As Attachment</a>]。attachment_fu是acts_as_attachment的升级版，作者是<a href="http://techno-weenie.net/">Rick Olson</a>，这个插件可以说在Rails plugins排行中进得了前三位的。</p>
<p>连接：<a href="http://hosting.media72.co.uk/blog/2007/12/09/10-ruby-on-rails-plugins-you-should-be-using/">10 Ruby On Rails Plugins You Should Be Using</a></p>
<p>attachment_fu提供了全面的测试框架，并且提供了对ImageScience，RMagick，minimagick的支持。</p>
<p>acts_as_attachment的教程介绍</p>
<p><a href="http://weblog.techno-weenie.net/articles/acts_as_attachment">Intro to Acts As Attachment</a> 一篇里简单的介绍了aaa的使用，按照里面的介绍就可以实现附件的上传了，我就是按照它的介绍实现了<a href="http://4rails.cn">4Rails.cn</a>的头像上传功能。不过这个插件的功能绝没这么简单。</p>
<p><a href="http://weblog.techno-weenie.net/articles/acts_as_attachment/thumbnailing">Acts As Attachment Thumbnailing</a> 一篇简单介绍了图片缩略图功能，这样就可以对上传的图片进行各种大小的缩略图生成了。</p>
<p>下面的内容是针对attachment_fu的。因为接口上没有做任何调整，只需将acts_as_attachment 改成 has_attachment，上面的教程依旧适用。</p>
<p>几个图片处理库</p>
<p>在attachment_fu的option中，可以声明 :processor ，指定图片处理库，这个包括ImageScience, Rmagick, 和MiniMagick，不指定将为默认安装的。</p>
<p><a href="http://seattlerb.rubyforge.org/ImageScience.html">ImageScience</a>：实现图片放缩的库，使用前需安装<a href="http://sourceforge.net/projects/freeimage">freeimage</a>和<a href="http://rubyforge.org/projects/rubyinline">rubyinline</a>，RubyInline允许你在ruby代码中直接编写c/c++代码。</p>
<p><a href="http://rmagick.rubyforge.org/">Rmagick</a>：使用的很多，windows的安装有特定的版本需求，需要下载<a href="http://rubyforge.org/frs/?group_id=12&amp;release_id=17573">rmagick-win32</a>最新版<a href="http://rubyforge.org/frs/download.php/46136/RMagick-2.7.1-ImageMagick-6.4.5-3-Q8.zip"> [2.7.1 binary gem for Ruby 1.8.6]RMagick-2.7.1-ImageMagick-6.4.5-3-Q8.zip(08年12月17日更新)</a>，这个对应的Ruby版本是1.8.6。里面已经放上了必须版本的ImageMagick和RMagick的gem，不用再找了。</p>
<p><a href="http://rubyforge.org/projects/mini-magick/">MiniMagick</a>：将Rmagick的精简，直接用Ruby包装ImageMagick command line。避免了RMagick的内存问题。</p>
<p>参数介绍</p>
<p>设置参数</p>
<p>图片缩略参数详解</p>
<p>关于Rmagick的内存泄露风险</p>
<p>引自：<a href="http://robbin.javaeye.com/blog/157731" target="_blank">JavaEye网站的RoR性能优化经验谈</a></p>
<blockquote><p>JavaEye也面临着内存泄漏的困扰，这方面困扰主要来自于Rmagic。Rmagick调用ImageMagick的C库来完成图片的操作，从我们的 监测来看，RMagick大多数情况下会缓慢的泄漏内存，在某些特定的图片操作上会急剧的泄漏内存。解决办法就是用mini_magick替代 Rmagick，mini_magick是直接调用ImageMagick的mogrify命令，另起一个进程来操作图片，操作完进程就结束了，绝无后患，由于Linux的fork进程开销不大，因此也不必担心性能问题。</p></blockquote>
<p>使用attachment_fu保存远程图片</p>
<p>未完，待续。。</p>
<p>参考资料：<br />
<a href="http://weblog.techno-weenie.net/articles/acts_as_attachment" target="_blank">acts_as_attachment</a></p>
<p><a href="http://weblog.techno-weenie.net/articles/acts_as_attachment/thumbnailing" target="_blank">acts_as_attachment thumbnailing</a></p>
<p><a href="http://svn.techno-weenie.net/projects/plugins/attachment_fu/README" target="_blank">attachment_fu README</a></p>
<p><a href="http://robbin.javaeye.com/blog/157731" target="_blank">JavaEye网站的RoR性能优化经验谈</a></p>
<p><a href="http://clarkware.com/cgi/blosxom/2007/02/24#FileUploadFu" target="_blank">File Upload Fu</a></p>
<p><a href="http://blog.vixiom.com/2007/12/28/hacking-attachment_fu-to-work-with-flashflex-uploads-and-crop-square-images/">Hacking attachment_fu to work with Flash/Flex uploads and crop square images</a></p>
<p><a href="http://almosteffortless.com/2007/03/25/working-with-attachment_fu/">Working with attachment_fu</a></p>
<p><a href="http://blog.chinaunix.net/u/10227/showart.php?id=75141">简单、易于扩展的图像读写库：FreeImage</a></p>
<p>其他：</p>
<p><a href="http://www.mysqlperformanceblog.com/">MySQL Performance Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://railser.cn/blog/acts_as_attachment-and-attachment_fu/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MephistoBlog使用的插件和第三方代码介绍</title>
		<link>http://railser.cn/blog/mephistoblog-vender-and-plugins</link>
		<comments>http://railser.cn/blog/mephistoblog-vender-and-plugins#comments</comments>
		<pubDate>Tue, 18 Dec 2007 02:15:37 +0000</pubDate>
		<dc:creator>里克</dc:creator>
				<category><![CDATA[default]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[mephisto]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://railser.cn/archives/mephistoblog-vender-and-plugins</guid>
		<description><![CDATA[本篇是在 开发笔记：rails分页和acts_as_taggable插件的应用 一文的后半部分基础上再整理的。内容上是连贯的。 在 Rails开发中，会用到很多有帮助的插件，A taxonomy of Rails plugins【中文翻译】 里讲到了如何制作插件，并引用了acts_as_taggable的例子进行讲解。 Top 11 Rails Plugins 里面更是讲了很多有帮助的插件。不过我更想细看一下mephisto-0.7.3里面的插件。 MephistoBlog用了哪些插件 看图： 说话： vender中： BlueCloth：BlueCloth是一个Markdown的Ruby实现，一个提供给网页文字撰写者将文本转成HTML的工具。Markdown令你可以写出容易阅读、容易撰写的文本格式，然后将它转换成结构化的XHTML（或者HTML）。 RedCloth：RedCloth是一个令你可以在Ruby中使用Textile的模块。Textile是一个文本格式，一个非常简单的文本格式。可以将一个可读的文本转成HTML。 RubyPants：是Ruby实现的“smart-quotes library SmartyPants”。RubyPants使用不同的APIs，它兼容上面两个的APIs，将ASCII的标点转换成 “smart” typographic punctuation HTML entities。参考：RubyPants RubyZip：rubyzip是一个ruby读写zip文件的类库。RDOC TZInfo：TZInfo是一个标准tz数据库提供不同时区的daylight savings的Ruby类库。 plugins中： a_gems：小巧的Ruby Gem管理工具，它在启动时会自动的将gem/lib的路径加载到$LOAD_PATH 中。 它不用介绍，就几行代码。 &#160; standard_dirs = &#91;'rails', 'plugins'&#93; gems = Dir&#91;File.join&#40;RAILS_ROOT, &#34;vendor/**&#34;&#41;&#93; if gems.any? gems.each do &#124;dir&#124; next if standard_dirs.include?&#40;File.basename&#40;dir&#41;&#41; lib [...]]]></description>
			<content:encoded><![CDATA[<pre>
<script type="text/javascript"><!--
google_ad_client = "pub-7545275883969710";
//468x60, 创建于 07-12-3
google_ad_slot = "2874464732";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script></pre>
<p>本篇是在 <a href="http://railser.cn/archives/development-log-rails-pagnate-and-acts-as-taggable">开发笔记：rails分页和acts_as_taggable插件的应用</a> 一文的后半部分基础上再整理的。内容上是连贯的。</p>
<p>在 Rails开发中，会用到很多有帮助的插件，<a href="http://alexyoung.org/articles/show/40/a_taxonomy_of_rails_plugins">A taxonomy of Rails plugins</a>【<a href="http://www.javaeye.com/topic/113929">中文翻译</a>】 里讲到了如何制作插件，并引用了acts_as_taggable的例子进行讲解。</p>
<p><a href="http://www.juixe.com/techknow/index.php/2006/07/05/top-11-rails-plugins/">Top 11 Rails Plugins</a> 里面更是讲了很多有帮助的插件。不过我更想细看一下<a href="http://www.mephistoblog.com/">mephisto-0.7.3</a>里面的插件。</p>
<h3>MephistoBlog用了哪些插件</h3>
<p>看图：<br />
<img src="http://railser.cn/wp-content/uploads/2007/12/vender.jpg" alt="vender" /></p>
<p><img src="http://railser.cn/wp-content/uploads/2007/12/plugins.jpg" alt="plugins" /></p>
<p>说话：<br />
<strong>vender中：</strong><br />
BlueCloth：<a href="http://www.deveiate.org/projects/BlueCloth">BlueCloth</a>是一个Markdown的Ruby实现，一个提供给网页文字撰写者将文本转成HTML的工具。Markdown令你可以写出容易阅读、容易撰写的文本格式，然后将它转换成结构化的XHTML（或者HTML）。</p>
<p>RedCloth：<a href="http://code.whytheluckystiff.net/redcloth/">RedCloth</a>是一个令你可以在Ruby中使用Textile的模块。Textile是一个文本格式，一个非常简单的文本格式。可以将一个可读的文本转成HTML。</p>
<p>RubyPants：是Ruby实现的“smart-quotes library SmartyPants”。RubyPants使用不同的APIs，它兼容上面两个的APIs，将ASCII的标点转换成 “smart” typographic punctuation HTML entities。参考：<a href="http://chneukirchen.org/blog/static/projects/rubypants.html">RubyPants</a></p>
<p>RubyZip：rubyzip是一个ruby读写zip文件的类库。<a href="http://rubyzip.sourceforge.net/">RDOC</a></p>
<p>TZInfo：<a href="http://tzinfo.rubyforge.org/">TZInfo</a>是一个标准tz数据库提供不同时区的daylight savings的Ruby类库。</p>
<p><strong>plugins中：</strong></p>
<p>a_gems：小巧的Ruby Gem管理工具，它在启动时会自动的将gem/lib的路径加载到$LOAD_PATH 中。<br />
它不用介绍，就几行代码。</p>
<blockquote>
<pre class="ruby">&nbsp;
standard_dirs = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'rails'</span>, <span style="color:#996600;">'plugins'</span><span style="color:#006600; font-weight:bold;">&#93;</span>
gems          = <span style="color:#CC00FF; font-weight:bold;">Dir</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span>RAILS_ROOT, <span style="color:#996600;">&quot;vendor/**&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
<span style="color:#9966CC; font-weight:bold;">if</span> gems.<span style="color:#9900CC;">any</span>?
  gems.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> |dir|
    <span style="color:#9966CC; font-weight:bold;">next</span> <span style="color:#9966CC; font-weight:bold;">if</span> standard_dirs.<span style="color:#9966CC; font-weight:bold;">include</span>?<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">basename</span><span style="color:#006600; font-weight:bold;">&#40;</span>dir<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    lib = <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span>dir, <span style="color:#996600;">'lib'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#ff6633; font-weight:bold;">$LOAD_PATH</span>.<span style="color:#9900CC;">unshift</span><span style="color:#006600; font-weight:bold;">&#40;</span>lib<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">directory</span>?<span style="color:#006600; font-weight:bold;">&#40;</span>lib<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre>
</blockquote>
<p><a href="http://technoweenie.stikipad.com/plugins/show/Acts+as+Attachment">acts_as_attachment</a>：保存附件文件到数据库或文件系统的插件。</p>
<p><a href="http://ar-paranoid.rubyforge.org/">acts_as_paranoid</a>：重写当前model的一些基础方法。当执行destroy时，设置deleted_at为当前时间。里克：意思是说它并不真正删除数据，只是加上了一个删除日期，证明该记录被删除了。它可以使你重新看到已删除的记录。对数据要求高的应用很有帮助。</p>
<p><a href="http://ar-versioned.rubyforge.org/">acts_as_versioned</a>：对一个ActiveRecord  module 进行简单的版本标注。可实现值的回滚操作。因为它为每一个create出来的记录都做了版本记录。</p>
<p><a href="http://weblog.techno-weenie.net/projects/dialog">dialog_helper</a>：一个简单的脚本，对浏览器的弹出窗口进行“装修”。</p>
<p>filtered_column：README里啥也没写！！看文件里面，是在做格式化文本，可能是在对BlueCloth和RedCloth的一个功能进行改进。代码很多，有用过的朋友请留言。</p>
<p>filtered_column_code_macro：增强ruby代码的高亮显示，使用了<a href="http://coderay.rubychan.de/">CodeRay</a>库，Ruby写的做语法高亮显示的库。</p>
<p>filtered_column_flickr_macro：flickr转换，文本编辑的加强功能。（Author::Scott Raymond）</p>
<p>labeled_form_helper：为表单元素增加label标签。readme里有示例。</p>
<p><a href="http://wiki.rubyonrails.org/rails/pages/Liquid+Plugin">Liquid</a>：一个模板引擎。特点：可以编辑应用的外观，而且不会被执行危险代码。直接从数据库渲染模板。里克：看上去有点像django的模板语言。</p>
<p>mephisto_converters：博客搬家程序，将<a href="http://www.textpattern.com/">Textpattern</a>，<a href="http://typo3.com/">Typo</a>和<a href="http://wordpress.org/">WordPress</a>转换成mephistoblog。</p>
<p><a href="http://mocha.rubyforge.org/">mocha</a>：Rails的一个测试套件，可以模拟和替换代码中的方法和实例，比如，你可以替换掉ActiveRecord重的实例方法，而避免在单元测试的环节操作数据库。毕竟操作数据库还是慢一些的。</p>
<p><a href="http://weblog.techno-weenie.net/2006/10/14/simply_bdd-update">simply_bdd</a>：可以在创建测试用例的时候使用上下文和代码块。</p>
<p><a href="http://matthewman.net/2006/09/04/new-rails-feature-simply_helpful/">simply_helpful</a>：新增的一些helper。加强功能。 <a href="http://www.juixe.com/techknow/index.php/2007/04/03/simply-helpful-rails-plugin/">Simply Helpful Rails Plugin</a>里介绍的比较详细，不过一些功能已经放到2.0里面了，对于老版本，尤其是博客里提到的1.2.2的应用，可以考虑安装的。</p>
<p><a href="http://weblog.techno-weenie.net/2006/9/3/white-listing-plugin-for-rails">white_list</a>：一个html安全增强工具，可以过滤掉一些hack代码，是html更安全。</p>
<p>er...<br />
到这里，mephisto blog的第三方代码和插件都写完了。</p>
<p>广告一下：狂喜欢的 <a href="http://www.footballmanager.net/">Football Manager 2008</a> 已经发了。狂好玩。我的曼城还在煎熬中，不过上个赛季最后一场比赛，客场对阿森纳，竟然无比顽强的2：1获胜。挤掉了曼联排名第四。哇哈哈哈！</p>
<p><img src="http://railser.cn/wp-content/uploads/2007/12/679.png" alt="man city" /></p>
<p>参考资料：<br />
<a href="http://www.mephistoblog.com/">MephistoBlog</a><br />
<a href="http://rubylib.cn/">Ruby Lib中文站</a><br />
<a href="http://baike.baidu.com/view/15482.htm">ASCII</a><br />
<a href="http://lgn21st.javaeye.com/blog/135502">用mocha测试rails，mock HTTPResponse</a></p>
]]></content:encoded>
			<wfw:commentRss>http://railser.cn/blog/mephistoblog-vender-and-plugins/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

