Home > Ruby on Rails

wwwaku

Acts As Taggable On Steroids

script/plugin install http://svn.viney.net.nz/things/rails/plugins/acts_as_taggable_on_steroids

めっちゃ簡単にダグがつけらかいれるrails用プラグイン。
ダグは大流行りです。タグつけたら検索が早いんじゃないかと中学生ぐらいのときに考えたことがあります。タグの問題点のしてタグ自体が平たく横並びなことがあります。たとえば大阪や東京のタグは日本というタグの中に内包されてほしい気持ちがわいてきます。そんなプラギンだれかつくりませんか?

CentOS5にRMagickインスコではまり中

ImageMagickはyumで問題ないけど、Rmagickをgemインスコするとttfがないとかでインスコしてくれません。助けてエロイ人。

[追記]
centos5 rmagickでなんかアクセスが多いみたい。
はまりが解消されたので、その方法を書いておきます。
wget http://www.zacharywhitley.com/linux/rpms/fedora/core/6/i386/msttcorefonts-2.0-1.noarch.rpm
rpm -ivh msttcorefonts-2.0-1.noarch.rpm
gem install rmagick

CentOSなのにfedoraの文字が出てるけど気にしない。

[参考]
http://willj.net/blog/2007/04/23/getting-rmagick-working-on-fedora-core-6/

URLにキーワードを埋め込む

amazonとかwikipediaを見ていると、キーワードそのものがURLに埋め込んである。WordPressも勝手にURLがタイトルまじりになる。
railsで同じことができるかいろいろ試してみた。
どうもrailsではlink_toとかでURLをつくると、日本語を直に入れた場合エスケープを勝手にしてくれるっぽい。そこではまった。それと、acts_as_sluggableのプラギンを使いURLを書き換え。プラギンのままでは英数字以外ははじく設定みたいなので、半角スペースをハイフンに書き換えるのみにプラギンを変更。
「id」を「id-日本語のタイトル」への変更は成功。念には念を入れて、各ページのコントローラーの頭で、「id」で来た場合「id-日本語のタイトル」へリダイレクトしその後、.to_iして内部処理。

今のところうまくいってます。

SAMBAのインストール

目標はMacからつながって、/rootが直にいじれればいい。
Railsのdevアプリは/root/hogeに置いてるし。
本当はemacsとrails.elでやってみたいけど、どうもインスコがうまくいかない。TextMateでかければいいかなって状態。
赤文字は変更前緑文字は変更後

[root@localhost ~]# yum -y install samba
[root@localhost ~]# vi /etc/samba/smb.conf
[global]

# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
workgroup = MYGROUP

[global]
dos charset = CP932
unix charset = UTF-8
display charset = UTF-8
# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
workgroup = WORKGROUP


load printers = yes
; load printers = yes
load printers = no
disable spoolss = yes

[root@localhost ~]# /etc/rc.d/init.d/smb start
[root@localhost ~]# pdbedit -a root

あぁ簡単。

RailsのインスコとCapistranoでデプロイ

「Capistranoってなんなのさ」
Railsでクラスタサーバー運用していると、サーバーの更新とか、結構コマンドを入力しないとだめなわけで、結構時間がかかる。それを簡単にしてくれるツール。

「Railsって聞いたことはあるけど、インスコムズそう」
インスコ自体はyumでチョチョイなんだけど、サーバー側の設定とか、データベースの設定とか、シランとだめなことが結構多い。

ってことで、インスコとデプロイしてみます。(設定はまだ)
http://blog.codahale.com/2006/06/19/time-for-a-grown-up-server-rails-mongrel-apache-capistrano-and-you/
このページを元にやってみました。

サーバーはMacBook9roで動くParallels。OSはCentOS5です。
メモリは256MB、HDは4096MB、ネットワークはshareでしてます。
わたしはOSインスコ後MacOSXのターミナルで操作してますけど、Winな方は、Puttyとか、TeraTERMとか使ってください。ターミナルの使い方はそれぞれ調べてみてください。あと、viも使ってます。使い方は「vi 使い方」とかで検索してください。

このインストールは内部での開発用を想定。意味が理解できたら、公開用もそう難しくないはず。
rootのままでいろいろやってきます。/root/hogeでdevelopmentして、/var/www/hogeにproductionな想定。途中パスワード設定してるけど、うまくデプロイできないので、パスワードは実際は使われていません。教えて、エロい人。



http://centossrv.com/centos5.shtml

OSのインスコはこのページのまま。変えたのはDHCPでIPアドレス取得に変えたところのみ。
赤文字は変更前緑文字は変更後

[root@localhost ~]# useradd centos
[root@localhost ~]# passwd centos
[root@localhost ~]# yum -y install httpd mysql-server
[root@localhost ~]# /etc/rc.d/init.d/iptables stop
[root@localhost ~]# chkconfig iptables off
[root@localhost ~]# setenforce 0
[root@localhost ~]# vi /etc/sysconfig/selinux
SELINUX=enforcing => SELINUX=disabled
[root@localhost ~]# /etc/rc.d/init.d/httpd start
[root@localhost ~]# chkconfig httpd on

[root@localhost ~]# yum -y install mod_ssl
[root@localhost ~]# yum -y install mod_dav_svn

[root@localhost ~]# cd /etc/pki/tls/certs/
[root@localhost certs]# make server.key
[root@localhost certs]# openssl rsa -in server.key -out server.key
[root@localhost certs]# make server.csr
[root@localhost certs]# openssl x509 -in server.csr -out server.pem -req -signkey server.key -days 365
[root@localhost certs]# chmod 400 server.*
[root@localhost certs]# cd /etc/httpd/conf
[root@localhost conf]# cp httpd.conf httpd_conf_original
[root@localhost conf]# cd /etc/httpd
[root@localhost httpd]# cp -R conf.d conf.d_backup
[root@localhost httpd]# vi /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/localhost.crt => SSLCertificateFile /etc/pki/tls/certs/server.pem
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key => SSLCertificateKeyFile /etc/pki/tls/certs/server.key
[root@localhost httpd]# /etc/rc.d/init.d/httpd restart

[root@localhost httpd]# yum -y install ruby ruby-devel irb rdoc
[root@localhost httpd]# cd
[root@localhost ~]# wget http://rubyforge.org/frs/download.php/17190/rubygems-0.9.2.tgz
[root@localhost ~]# tar zxvf rubygems-0.9.2.tgz
[root@localhost ~]# cd rubygems-0.9.2
[root@localhost rubygems-0.9.2]# ruby setup.rb
[root@localhost rubygems-0.9.2]# cd ../
[root@localhost rubygems-0.9.2]# rm -rf rubygems-0.9.2*
[root@localhost rubygems-0.9.2]# gem install rails --include-dependencies
[root@localhost rubygems-0.9.2]# gem install daemons gem_plugin mongrel mongrel_cluster --include-dependencies
2. mongrel 1.0.1 (ruby)
1. fastthread 1.0 (ruby)

[root@localhost rubygems-0.9.2]# yum -y install mysql-devel
[root@localhost rubygems-0.9.2]# gem install mysql -- --with-mysql-config=/usr/bin/mysql_config

[root@localhost rubygems-0.9.2]# cd /var
[root@localhost var]# mkdir svn
[root@localhost var]# cd svn
[root@localhost svn]# mkdir hoge
[root@localhost svn]# cd hoge
[root@localhost hoge]# mkdir repos
[root@localhost hoge]# svnadmin create /var/svn/hoge/repos
[root@localhost hoge]# cd repos
[root@localhost repos]# chown -R apache.apache /var/svn/hoge/repos
[root@localhost repos]# mkdir /etc/httpd/passwd
[root@localhost repos]# htpasswd -c /etc/httpd/passwd/passwords centos
[root@localhost repos]# cd /etc/httpd
[root@localhost httpd]# chown -R apache.apache passwd
[root@localhost httpd]# cd /etc/httpd/conf.d
[root@localhost conf.d]# vi subversion.conf
#<Location /repos>
# DAV svn
# SVNParentPath /var/www/svn
#
# # Limit write permission to list of valid users.
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# # Require SSL connection for password protection.
# # SSLRequireSSL
#
# AuthType Basic
# AuthName "Authorization Realm"
# AuthUserFile /path/to/passwdfile
# Require valid-user
# </LimitExcept>
#</Location>

<Location /svn/hoge>
DAV svn
SVNParentPath /var/svn/hoge

# # Limit write permission to list of valid users.
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# # Require SSL connection for password protection.
# # SSLRequireSSL
# AuthType Basic
# AuthName "Authorization Realm"
# AuthUserFile /etc/httpd/passwd/passwords
# Require valid-user
# </LimitExcept>
</Location>

[root@localhost conf.d]# /etc/rc.d/init.d/httpd restart

[root@localhost conf.d]# cd /var/svn/hoge/repos
[root@localhost repos]# mkdir branches
[root@localhost repos]# mkdir tags
[root@localhost repos]# mkdir trunk
[root@localhost repos]# cd
[root@localhost ~]# rails hoge
[root@localhost repos]# cd hoge
[root@localhost hoge]# mongrel_rails cluster::configure -e production \
> -p 8000 \
> -a 127.0.0.1 \
> -N 3 \
> -c /var/www/hoge/current
[root@localhost hoge]# gem install capistrano
[root@localhost hoge]# cd ../
[root@localhost ~]# cap --apply-to hoge
[root@localhost ~]# cp hoge/config/deploy.rb hoge/config/deploy.rb.original
[root@localhost ~]# rm -rf hoge/config/deploy.rb
[root@localhost ~]# vi hoge/config/deploy.rb
require 'mongrel_cluster/recipes'
set :application, "hoge"
set :repository, "http://localhost/svn/#{application}/repos/trunk"
role :web, "localhost"
role :app, "localhost"
role :db, "localhost", :primary => true
set :deploy_to, "/var/www/#{application}"
set :mongrel_conf, "#{current_path}/config/mongrel_cluster.yml"
[root@localhost ~]# cd /etc/init.d
[root@localhost init.d]# ln -s /usr/lib/ruby/gems/1.8/gems/mongrel_cluster-0.2.1/resources/mongrel_cluster mongrel_cluster
[root@localhost init.d]# chmod +x mongrel_cluster
[root@localhost init.d]# /sbin/chkconfig --level 345 mongrel_cluster on
[root@localhost init.d]# mkdir -p /etc/mongrel_cluster
[root@localhost init.d]# ln -s /root/hoge/config/mongrel_cluster.yml /etc/mongrel_cluster/hoge.yml
[root@localhost init.d]# cd
[root@localhost ~]# cd hoge
[root@localhost hoge]# vi config/mongrel_cluster.yml
address: 127.0.0.1 => #address: 127.0.0.1
[root@localhost hoge]# svn import file:///var/svn/hoge/repos/trunk -m "Initial import."
[root@localhost hoge]# mkdir /var/www/hoge/shared
[root@localhost hoge]# mkdir /var/www/hoge/shared/log
[root@localhost hoge]# mkdir /var/www/hoge/shared/system
[root@localhost hoge]# cap cold_deploy
[root@localhost hoge]# cd
[root@localhost ~]# rm -rf hoge
[root@localhost ~]# svn checkout file:///var/svn/hoge/repos/trunk hoge
[root@localhost ~]# cd hoge
[root@localhost hoge]# vi config/mongrel_cluster.yml
#address: 127.0.0.1 => address: 127.0.0.1
[root@localhost hoge]# cd config
[root@localhost config]# svn commit mongrel_cluster.yml -m "deploy."
[root@localhost config]# cd ../
[root@localhost hoge]# cap deploy

[root@localhost hoge]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
default-character-set = utf8

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql]
default-character-set = utf8

[root@localhost hoge]# /etc/rc.d/init.d/mysqld start
[root@localhost hoge]# chkconfig mysqld on

解説つけたり、色分けしたりは追々と、、、
無駄とか、間違いの突っ込みよろしくです。

[追記]
MySQL関係の設定忘れてた。こっそり追加

Capistranoの利用へ向けて

Capistranoを利用しようとすると、いろんな情報が必要でまいっています。
subversionはいるし、apacheはあった方がいいし、sslもあったほうがいいし、
結局それらはインスコできたのですが、log/mongrel.pidがおかしいみたいなエラーが出てうまくデプロイできない。
本当よくわからん。

いろんなtry&errorでその他はわかってきたけど。

トッラクバックの実装

http://suakx.jp/architecture/show/2028
リンク先は住宅の情報です。外壁が木貼の住宅です。初めてのTB先でもあります。

トラックバック受信の実装してみた。
仕組み自体は簡単。ただ、TBスパム防止のためのチェック機能に時間がかかった。
正規表現を使ってこちらの意図を表現するのだが、正規表現自体の仕組みは簡単なのに、要領を得た検査先を指定するとなると結構難しい。アルファベットを習ってすぐに英語を話せといわれているみたいなものでしょうか。

詳説 正規表現 第2版
Jeffrey E.F. Friedl、田和 勝「詳説 正規表現 第2版」オライリー・ジャパン2003/05/26

More...

Home > Ruby on Rails

Search
Feeds

Page Top