在Rails Layout中使用JQuery的解决办法

Rails的Layout非常的好用,可以把Header,Footer,SideBar在一个公共的页面,统一风格而且非常的易于维护.
JQuery是我比较喜欢的js framework,强大的selector绝对符合我的口味,不二的选择.

问题就来了,Layout中通常包含了

的内容,而JQuery需要在header通过如下的code实现初始化.

<script type="text/javascript">
$(document).ready(function(){
......
}
</script>

而这部分代码肯定是根据具体的功能页面不同而有所不同的,无法直接写在Layout页面中,那该怎么办?

Solution 1
我自己找到并使用的解决办法:神奇的方法content_for.
http://railscasts.com/episodes/8-layouts-and-content-for.
在Layout文件中加入如下的code.

<head>
<title>My Tasks</title>
<%= yield :jquery %>
</head>

在具体的功能页面中通过如下形式定义JQuery初始化脚本.

<% content_for :jquery do %>
<script type="text/javascript">
$(document).ready(function(){
......
}
</script>
<% end %>

OK了.这样就可以了.这个解决办法的问题是你必须在每个功能页面实现一边初始化脚本.另外如果header,sidebar需要用到jquery的话还需要额外处理.不过因为这些在我的应用中暂时都不需要,所以这个解决办法对我而言还是可以的.

Solution 2
这是Javaeye上小小龙猫提供的解决办法.
http://jonny131.javaeye.com/admin/blogs/179842
最基础的方法还是使用content_for这个方法.不过封装的要更加好,使用起来更加灵活.有兴趣的同学可以参考一下.

 

在Hostmonster上搭建自己的Git服务器

去年开始接触到git之后,就不自觉地喜欢上了它.所有版本信息都储存在单独的.git目录下,对于超讨厌无穷无尽svn folder的我来说,就这一点就让我爱不释手了.

有了Hostmonster空间之后,一直就想搭建一个git repo.这样随便找一个coffee bean(starbucks没办法上网…), git clone, git push.程序员眼中的暇意生活大概就是这个样子吧.

说干就干,google之.找到一篇不错的.Git: private repositories on shared hosting,步骤还是相当简单的.

Step 1 创建自己的版本库

cd yourapp
git init
git add .
git commit -m "init commit"

这样,你自己的版本库搭建好了.就多了一个.git目录,说不出的舒坦啊….

Step 2 在Hostmonster上搭建版本库

cd ../
git clone --bare yourapp yourapp.git
touch yourapp.git/git-daemon-export-ok
scp -rf yourapp.git username@yourdomain.com:/home/username/path/

git –bare会生成一个只包含版本信息的版本库. 通过ssh把yourapp.git上传到hostmonster的目录下.
OK,你的远端私有Git版本库就搭建成功了.

Step 3本地获取项目文件

git clone ssh://username@yourdomain.com/~/path/yourapp.git

简单吧.输入你的密码,就可以获得整个项目文件了.

遗留问题:
1 人心不足蛇吞象.最好能像heroku那样. git push之后直接完成服务器项目部署的工作那自然是最好了.(其实现在也只是要在服务器上pull一下就好了-.-).然后还要自动完成rake db:migrate 之类的工作. 这些事情也许可以通过shell或者Capistrano来完成.过两天再看了….

 

HostMonster初体验

4月2日百无聊赖,心血来潮点击了HostMonster的连接.
“购买两年,3.95$/mon的超低优惠”.哇塞,算下来一共只要94$,貌似比Dreamhost的coupon都便宜(菜鸟就对推荐忽略不计了..).立马拿下…

这其中还有一个小小的插曲,因为公司IP是美国的,和我的等级信息不符,结果我就被人家flagged了,要求verify我的资格…-,-,汗啊,老实本分的公民一枚.Paypal的付费证明,Passport Photo ID,忙活了两天,总算如愿以偿通过了Verification.总的来说HostMonster的HelpDesk还是很热情积极的.技术问题基本1,2个小时就有回应.Verification也是每天及时回复.

终于用上了HostMonster,看着Control Panel一堆一堆的功能,口水都要流出来.

Security

支持SSH,有这个就什么都不怕拉.SFTP下行速度大概在200k/s左右,还是很不错的。

Domain

通过”Subdomain”功能,可以方便的二级域名绑定到指定的文件夹.
另外通过HostMonster,可以方便的与其他域名供应商那里注册的域名进行关联,将其映射指定文件夹(Addon Domain)或者当前域名相同的文件夹(Park Domain).超方便的功能阿,正好在Namecheap有两个闲置域名呢,赶紧联过来.

Log

默认支持Webalizer和Awstats.可以通过”Choose Log Programs”为各个二级域名指定Log Program.

File

支持Full Backup和Partial Backup(Home Directory,Mysql Database和Email Forward,Filter)两种,提供手动备份和自动备份两种.绝对是我这种安装偏执的最爱.

支持Web Disk,FTP和Web File Manager各种功能.

Software/Services

这当然指最关注的部分.PHP和Perl当然是必不可少.支持Ruby on Rails也是我喜欢它的原因.不管三七二十一,当天我就安装了无数需要的,不需要的gems…….

“SimpleScripts”提供了许多流行程序的一键安装功能:Wordpress, phpBB, Joomla, PmWiki.而且直接提供二级域名的映射服务.方便就是一个字.

以上就是目前我用到的部分.慢慢挖掘吧.HostMonster我来啦.

另外安装了SpeedTest Mini来测试速度,有兴趣的朋友可以测试一下,给我反馈。

hostmonster

HostMonster Control Panel Part I

HostMonster Control Panel Part II

HostMonster Control Panel Part II

HostMonster Control Panel Part III

HostMonster Control Panel Part III

 

在Heroku上部署Radiant

Heroku:非常赞的RoR服务提供商(服务好,还免费)
Radiant:基于RoR的开源CMS。
Step 1:
sudo gem install radiant
Radiant很体贴的已经做成了gem.直接安装就可以用了。
如果要查看具体的实现可以在radiant gem的文件夹下找到。
Step 2:
radiant –database sqlite mycms
类似Rails,直接使用这条命令就可以生成整个项目文件。支持各种主流数据库。
Step 3:
cd mycms;rake db:bootstrap
使用rake初始化数据。如果数据库配置不是默认的话需要自己手动修改config/database.yml
Step 4:
将config/environment.rb中的配置修改成如下内容
config.action_controller.page_cache_directory = “#{RAILS_ROOT}/tmp/cache
Radiant会缓存生成的内容页面。Heroku的文件系统权限和默认的不一样,所以要做如上修改。
Step 5:
git init
建立Git版本文件。
Step 6:
在项目根目录下建立新文件–.gems
rspec –version 1.2.2
radiant –version 0.7.1
Heroku的特色,在git push的时候会根据这个文件安装你需要的gems.体贴温馨。
Step 7:
git add .
git commit -m “init”
提交初始项目文件。
Step 8:
heroku create <yourapp>
在Heroku上建立你的系统。yourapp就是你的网站域名。
之后可以根据yourapp.heroku.com对系统进行访问。
Step 9
git push heroku master
提交文件至Heroku Git服务器。
第一次提交需要建立master作为Branch名,以后可以直接通过git push heroku进行提交。
Step 10
heroku db:push
将本地的数据库内容提交至你的Heroku数据库。
需要Heroku 0.6.1以后的版本,如果你没有这个功能,请升级Heroku gem版本。
OK了。访问<yourname>.heroku.com.你的CMS就这样搭建成功了。
Tips 1:
Radiant需要另外两个gem:cucumber和hoe.
在windows下会有提示,在Linux下则会顺利安装,但是Step2的时候会报如下错误。
Missing the Radiant gem. Please `gem install -v= radiant`, update your RADIANT_GEM_VERSION setting in config/environment.rb for the Radiant version you do have installed, or comment out RADIANT_GEM_VERSION to use the latest version installed.
卸载radiant,安装cucumber,hoe后重新安装radiant就可以了。
Tips 2:
理论上Heroku支持各种数据库。
但是Radiant使用mysql安装的话,在Step 10会报错Internal Error.反正Heroku本省使用Postgresql,所以一开始安装的时候还是老实使用sqlite3比较好。

 

VPS攒机经历(7)

最后还是选择了三个月rashost,皑皑,没办法,用的爽才是硬道理,安装维护都要方便很多。
对于系统一流问题也有了一些update.
对于系统以及进程的监控发现了如下的解决方案
1)htop
很方便的console下的监控软件,进程,系统地内容,cpu都可以一清二楚
2)munin
twitter目前使用的系统监控软件,可以很方便的监控系统各个资源的使用情况,包括apache, mysql等等,还可以生成报表。
3)god
ruby的gem.可以监控mongrel的memory, cpu,并自动重起服务(需要研究对lighttpd,fastcgi的控制)
 
 
对于rails的框架选择
参考了网上很多资料以后,最终选择了javaeye的lighttpd + fastcgi的实现方式。
同时选用了ruby enterprise作为运行环境(本来ruby enterprise是人家公司和mod_rails合作的,皑皑,可惜了)
修改的方法也很方便,直接修改public/dispatch.fcgi中的ruby命令就可以了。
相关的问题是需要为ruby enterprise重新安装一遍所有的gem
目前系统基本稳定在230M左右的内存占用上。
 
其他相关的内容
1安装uchome
2安装ucenter
3安装discuz
4安装ecshop
5安装wordpress
6安装munin
7mapping domain name to ip
8安装phpmyadmin
 
遗留问题
1)如何为munin设置二级域名,如果成功可以推广到其他模块

 

VPS攒机经历(6)

所谓饿死胆小的,撑死胆大的。
昨天ark提到ruby enterprise大概能提高效率解决内存溢出。
马上安装
安装倒是很容易
./installer
/opt/ruby-enterprise/bin/gem install rails mongrel mongrel_cluster heroku memcache-client
问题
1怎么使用
解决
想了半天,靠我的聪明才智想到了了
修改rails/public/dispatch.fcgi中ruby路径
 
2lighttpd启动成功,日志报错又是那个backend idle ;5 seconds之类的。。。
解决
ruby-fcgi没装。。。
./opt/ruby-enterprise/bin/gem install fcgi
 
3ruby-fcgi安装失败
have_header: checking for fcgiapp.h… ——————– no
没有fcgi的头文件
解决
原来fcgi是自己装的,系统不认。
进入fcgi gem的安装目录
/opt/ruby-enterprise/bin/ruby ./extconf.rb –with-fcgi-dir=…..
make ** make install
/opt/ruby-enterprise/bin/gem install fcgi
搞定
 
杀死所有fcgi进程
重起lighttpd,等待结果

 

VPS攒机经历(2)

1安装memcached, libevent
yum install memcached
 
2安装git
 
问题
2.1
Error: Missing Dependency: libapr-0.so.0 is needed by package subver
解决:
 and so on….(I hate rpm )
 
3安装ruby,rubygems,rails,mongrel,mongrel_cluster
问题
3.1
checking build system type… i686-pc-linux-gnu
checking host system type… i686-pc-linux-gnu
checking target system type… i686-pc-linux-gnu
checking for gcc… no
checking for cc… no
checking for cl.exe… no
configure: error: no acceptable C compiler found in $PATH
See `config.log’ for more details.
解决:
安装gcc
 
3.2
Error: Missing Dependency: glibc-common = 2.3.4-2.13 is needed by package glibc-dummy-centos-4
解决
yum erase glibc-dummy-centos-4
 
3.3
vim /etc/profile
添加ruby 路径
 
3.4
gem list

*** LOCAL GEMS ***

actionmailer (2.1.0)
actionpack (2.1.0)
activerecord (2.1.0)
activeresource (2.1.0)
activesupport (2.1.0)
cgi_multipart_eof_fix (2.5.0)
daemons (1.0.10)
fastthread (1.0.1)
gem_plugin (0.2.3)
heroku (0.4.1)
hoe (1.7.0)
memcache-client (1.5.0)
mongrel (1.1.5)
mongrel_cluster (1.0.5)
rails (2.1.0)
rake (0.8.3)
rest-client (0.7)
rspec (1.1.8)
rubyforge (1.0.0)
ZenTest (3.10.0)

 

 

从rfacebook 到facebooker

     最近在钻研Facebook + Ruby on Rails的application,坦白说没有当初php那么顺畅。可能因为Rails本身的框架涵盖的东西太多了吧,反而PHP这样最简单直接,反而容易上手。Rfacebook和Facebooker都是Facebook Client Library based on Ruby on Rails,一开始选择前者也没有什么特别的理由,谁让人家就是Using Ruby on Rails with Facebook Platform上的首选呢。
     总体来说Rfacebook就是用Ruby on Rails来解析Facebook请求协议的解析包,如同PHP Client一样,是比较Straight地解决办法。由于有了PHP上的经验,Rfacebook的安装总体来说还是很顺利的,大概前后花了两个晚上Hello World就出来了,直接Scaffold了一个Object 就可以show在facebook上了。当然问题也就接踵而来。
     遇到的最主要问题就是路由。一方面Facebook Application是以apps.facebook.com/xiustodolist作为Context Root来解析的。另外一方面Ruby on Rails有自己的路由解析策略,例如Scaffold出来的new.html.erb中的<%=link_to ‘Back’, users_path %>都是以apps.facebook.com作为根来作路由解析的。所以已开始所有的Link都完全不对,完全没有办法点击。Google了一下,原来是Rails2.0 named routes在作怪。当然也有解决的办法,不过文中更加推荐了Facebooker地解决办法,这也是我第一次听说了Facebooker.
     之后我访问了Rfacebook的主页,看到作者推荐Facebooker的留言,还说如果Facebooker1.0 release,他就要停掉Rfacebook,嗯,还有什么理由不试试看Facebooker呢,嗯,gogogo.
     Facebooker的安装之路远没有Rfacebook来的顺利。主要遇到了两个问题。
1 Facebooker 已经从SVN搬迁到了Git上。最可恨的是SVN上最后的版本还有编译错误。网上比较著名几篇Tutorial都继承了这个错误,让初学者完全摸不到头脑。解决办法,去Git自己下载最新的版本手动安装。
2 Facebooker会按照Rails 2.0的named routes去解析request,所以面对Facebook的请求,他会最后Forward给index.fbml.erb而不是index.html.erb,不仔细看教程就会错过了,例如我。。
3 默认的respond_to没有fbml的Accept_type,所以如果你希望继续使用respond_to这么有趣的东西的话,就需要在/config/initializers/mime_types.rb中添加text/html = fbml 的mapping.
     昨天刚刚完成了Facebooker的安装,总体来说非常的Rails 2.0 oriented.路由问题也都没有出现,可以放心的使用。
 
参考:Rfacebook

 

最近看到的Ruby on Rails 应用

github
http://github.com/
基于RoR的Git hosting.
由于Rails将项目迁移过去而名声鹊起.
介绍参考
GitHub – 基于Rails的Git库托管

lighthouse
http://lighthouseapp.com/
基于RoR的需求问题跟踪系统.
同样由于Rails将Bug,Feature跟踪迁移过去而名声鹊起.
没有中文参考….

heroku
http://heroku.com/
基于RoR的虚拟主机服务提供商.
基于Amazon的EC2服务.
最近获得风投300万美金而成为了RoR项目成功的又一代表.
Heroku: Ruby on Rails服务商得到300万美金投资

 

无觅相关文章插件,快速提升流量