Railsでannotateを使うメモ
modelにスキーマ情報が追加される便利なannotateというライブラリを使用するためにGemfileに以下を追記。
gem 'annotate'
その後、bundle installを実行。
現時点で存在するmodelへスキーマ情報を追加するために以下コマンドを実行
$ bundle exec annotate
こんな感じでスキーマ情報が追加されます。
# == Schema Information
#
# Table name: users
#
# id :integer not null, primary key
# name :string(255)
# email :string(255)
# created_at :datetime
# updated_at :datetime
#class User < ActiveRecord::Base
has_many :articles
end
便利ですね!
RailsでRspecを使うメモ
最近まともにRailsを触り始めました。
よく忘れるのでメモ。
テストはRspecを使いたいので、アプリケーションを作成するときは以下コマンドで。
デフォルトのtest-unit関連のファイル生成しません。
その後、Rspecを使うための設定などを。
Gemfileに以下を追記。
追記後、bundle installを実行してライブラリを入れたら、
以下コマンドでRspecを入れる。
modelやcontroller作成時に自動でRspecのファイルも生成したいので、
「config/application.rb」を修正。
$ vi config/application.rb
config.generators.test_framework = "rspec" #追加
まだ今のところあまりテスト書いてないですが...
CentOS6.4にMySQL5.6.14をインストールした
いつもだいたいyumで5.5くらいを入れているので、
最新を入れてみようと思った。
公式のrpmで入れてみたけど、簡単ですね。
$ sudo yum -y localinstall http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-compat-5.6.14-1.el6.x86_64.rpm $ sudo yum -y localinstall http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-5.6.14-1.el6.x86_64.rpm $ sudo yum -y localinstall http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-server-5.6.14-1.el6.x86_64.rpm $ sudo yum -y localinstall http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-devel-5.6.14-1.el6.x86_64.rpm $ sudo yum -y localinstall http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-client-5.6.14-1.el6.x86_64.rpm
古いバージョンだとインストール直後は、パスワードなしとかでログインできるけど、
5.6は初期状態でパスワードが設定させていて、以下にパスワードが書かれたファイルが置かれているようですね。
# cat /root/.mysql_secret # The random password set for the root user at Tue Nov 26 01:54:41 2013 (local time): password
CentOS6.2にMySQLをインストールした
半分寝ながら書いています。
これまた、さくらVPSでのお話し。
事前に必要なモノを入れておく。
# yum install cmake # yum install ncurses-devel
MySQL用ユーザ作成。
# groupadd mysql # useradd mysql -g mysql -s /sbin/nologin
インストール。
# cd /usr/local/src/ # wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.24.tar.gz/from/http://cdn.mysql.com/ # tar zxvf mysql-5.5.24.tar.gz # cd mysql-5.5.24 # cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci # make # make install
DBを初期化。
# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql # chown -R mysql:mysql /usr/local/mysql
設定ファイルをコピーして、InnoDBでテーブル毎にデータファイルを作成するように設定。
# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf # vi /etc/my.cnf [mysqld] innodb_file_per_table
起動スクリプトを用意して、スタート!
# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld # chmod +x /etc/rc.d/init.d/mysqld # chkconfig --add mysqld # chkconfig mysqld on # service mysqld start
CentOS6.2にNginxをインストールした
さくらのVPSでのお話し。
作業メモがてら。
事前に必要なモノを入れておく。
# yum install pcre-devel # yum install zlib-devel # yum install openssl-devel
Nginx用ユーザを作成。
# groupadd nginx # useradd nginx -g nginx -s /sbin/nologin
インストール。
# cd /usr/local/src/ # wget http://nginx.org/download/nginx-1.3.2.tar.gz # tar zxvf nginx-1.3.2.tar.gz # cd nginx-1.3.2 # ./configure --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module # make # make install
起動用スクリプト。
# vi /etc/init.d/nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
lockfile=/usr/local/nginx/logs/nginx.lock
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
sleep 1
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac実行権限を付与して、自動起動の設定をして、スタート!
# chmod +x /etc/init.d/nginx # chkconfig --add nginx # chkconfig nginx on # service nginx start
CentOS5.7にRubyを入れる
libyaml-develが必要らしいので入れる。
CentOS標準レポジトリにはないのでEPELから入れる。
# cd /usr/local/src # wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm # rpm -Uvh epel-release-5-4.noarch.rpm # yum --enablerepo=epel install libyaml-devel.x86_64
SQLiteが必要らしいので入れる。
yumで入るバージョンが古いので、ソースから入れる。
# cd /usr/local/src # wget http://www.sqlite.org/sqlite-autoconf-3070400.tar.gz # tar zxvf sqlite-autoconf-3070400.tar.gz # cd sqlite-autoconf-3070400 # ./configure # make # make install
そして、Rubyを入れる。
# cd /usr/local/src/ # wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.gz # tar zxvf ruby-1.9.3-p0.tar.gz # cd ruby-1.9.3-p0 # ./configure --prefix=/usr # make # make install # ruby -v ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux] # gem -v 1.8.11
ついでにrailsも入れよう。
# gem install rails
と思ったら、以下のようなエラーが出たので
ERROR: Loading command: install (LoadError)
cannot load such file -- zlib
ERROR: While executing gem ... (NameError)
uninitialized constant Gem::Commands::InstallCommand
zlibを入れてあげる。
# cd /usr/local/src/ruby-1.9.3-p0/ext/zlib # ruby extconf.rb # make # make install
再度railsを入れる。
# gem install rails file 'lib' not found # rails -v Rails 3.2.0
インストールは出来たけど、何かエラー出たので、以下のようにした。
# gem install rails --no-ri --no-rdoc Successfully installed rails-3.2.0 1 gem installed # gem install rails Fetching: rails-3.2.0.gem (100%) Successfully installed rails-3.2.0 1 gem installed Installing ri documentation for rails-3.2.0... Installing RDoc documentation for rails-3.2.0...
とりあえず、大丈夫かな。
新規アプリケーションを作ろうとしたら、エラーが出たので、必要なものを適宜入れる。
# rails new hoge /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- openssl (LoadError) # yum install openssl-devel.x86_64 # cd /usr/local/src/ruby-1.9.3-p0/ext/openssl/ # ruby extconf.rb # make # make install
サーバ起動しようとしたら、エラー出たので対応する。
undefined symbol: sqlite3_initialize # gem install sqlite3 # vi ~/.bashrc LD_LIBRARY_PATH=/usr/local/lib export LD_LIBRARY_PATH # source ~/.bashrc
またまた何かエラー出たので対応する。
Could not find a JavaScript runtime. # vi Gemfile gem 'execjs' gem 'therubyracer' # gem install therubyracer # bundle install
とりあえず、サーバ起動出来た。。。
# rails s => Booting WEBrick => Rails 3.2.0 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2012-01-23 00:34:20] INFO WEBrick 1.3.1 [2012-01-23 00:34:20] INFO ruby 1.9.3 (2011-10-30) [x86_64-linux] [2012-01-23 00:34:20] INFO WEBrick::HTTPServer#start: pid=11548 port=3000
apacheと連携させるためにPassengerを入れる。
# gem install passenger # passenger-install-apache2-module
不足しているものが表示されるので、適宜入れていく。
自分の場合は以下を入れました。
# yum install httpd-devel.x86_64 # yum install curl-devel.x86_64
apacheの設定ファイルに追加
LoadModule passenger_module /usr/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.9.1/gems/passenger-3.0.11 PassengerRuby /usr/bin/ruby <VirtualHost *:80> ServerName www.yourhost.com DocumentRoot /somewhere/public # <-- be sure to point to 'public'! <Directory /somewhere/public> AllowOverride all # <-- relax Apache security settings Options -MultiViews # <-- MultiViews must be turned off </Directory> </VirtualHost>
PATHを設定します。
# vi /etc/sysconfig/httpd LD_LIBRARY_PATH=/usr/local/lib export LD_LIBRARY_PATH
うーん。
まだエラーが出ているんですが、後日時間を見つけてエラーをつぶしていこうと思います。
前回やったときは、もっとスムーズにいった気がするんですがね。。。



