2013年9月29日日曜日

Ubuntu13にrbenvをインストールしてみた

Ubuntu13にrbenvをインストールする手順メモです。

▽インストール手順

1. 必要なパッケージを事前にインストールする
1
$ sudo apt-get install build-essential bison libreadline6-dev curl git-core zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev autoconf libncurses5-dev

2. rbenv, ruby-buildをインストール
1
$ sudo apt-get install rbenv ruby-build

3. rbenvのパスを追加
1
2
3
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ echo 'export PATH="$HOME/.rbenv/shims:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile

▽rbenvの使い方

・インストールできるrubyバージョン一覧の表示
1
$ rbenv install --list

・インストールされているバージョン一覧の表示
1
$ rbenv versions

・rubyのインストール
1
2
$ rbenv install 2.0.0-dev
$ rbenv rehash

・標準バージョンの設定
1
2
$ rbenv shell  2.0.0-dev # 現在実行しているシェル環境上の設定
$ rbenv global 2.0.0-dev # システム全体の設定

・不要なバージョンを削除する
1
2
$ rbenv uninstall -f 2.0.0-dev
$ rbenv rehash


2013年9月9日月曜日

MySQL5.1を5.5にアップグレードしたら動かなくなった。

タイトルの通りですが、MySQL5.1を5.5にアップグレードしたらRedmineが止まってしまったので、復旧メモです。

▽ ログを確認
# /var/log/mysqld.log
130907 11:43:43 [ERROR] /usr/libexec/mysqld: unknown variable 'default-character-set=utf8'
→ どうやらMySQL5.5でdefault-character-set変数は廃止されたらしい。

▽ my.cnfを修正
# /etc/my.cnf
[mysqld]
- default-character-set=utf8  # 削除(頭のマイナスはいらないよ)
+ character-set-server=utf8  # 追加(頭のプラスはいらないよ)
(注) mysqldだけ変更する。clientとか設定している人はそのままdefault-character-setでよい。

$ service mysqld start
→ 失敗

▽ もう一度ログを確認
# /var/log/mysqld.log
130907 12:04:22 [ERROR] Missing system table mysql.proxies_priv; please run mysql_upgrade to create it

▽この時点で一応mysqlは起動する...はず
service mysqld start
→OK

▽もう一度コマンド実行
$ mysql_upgrade -uroot -p

▽mysqlにログインしてみる
$ mysql -u root -p
→ ログイン成功!

2013年9月6日金曜日

Rails4.0でcron(バッチ処理)を動かす設定

rails4.0でバッチ処理を作成する手順のメモ

railsでバッチ処理を行うにはrails runnerやrakeを作成する方法があるようだ。
今回はrails runnerで作成した。


1.config/application.rbを修正してlib/tasks配下をオートロードの対象とする

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# config/application.rb
module Project
  class Application < Rails::Application
    #
    ...
    #

    # lib配下をオートロードの対象とする
    config.autoload_paths += %W(#{config.root}/lib)
  end
end


2.実行ファイルをlib/tasks配下に作成
 hoge_task.rb を作成

1
2
3
4
5
class Tasks::HogeTask
  def self.execute
    puts "Hoge"
  end
end


3.作成したタスクを実行してみる

1
rails runner Tasks::HogeTask.execute


4.cronに登録する

 cronの登録にはwheneverという便利なgemがあるのでそれを使用する。


4-1.インストール
 wheneverをGemfileに記載してbundle install

1
2
# Gemfile
gem 'whenever', :require => false

1
bundle install


4-2.configファイルの作成

1
2
3
$ wheneverize .
上記でだめなら
$ bundle wheneverize exec .


4-3.cronで実行するコマンドを設定
 (2013/9/7追記)実行環境の設定を追記

1
2
3
4
5
6
# config/schedule.rb
set :output, 'log/cron.log'
set :environment, :development

every 20.minute do
  runner 'Tasks:HogeTask.execute'
end


4-4.設定内容の確認

1
bundle exec whenever


4-5.cronへ登録

1
bundle exec whenever --update-crontab

以上でcronの登録は完了。


○その他のコマンド
・cronから登録を削除する

1
bundle exec whenever --clear-crontab


・時間の指定方法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 3時間ごと
every 3.hours do
  runner "Tasks::HogeTask.execute"
end

# 毎日 AM5:00
every 1.day, :at => '5:00 am' do
  runner "Tasks::HogeTask.execute"
end

# 日曜日のPM5:00
every :sunday, :at => '5pm' do
  runner "Tasks::HogeTask.execute"
end

# 一時間ごと
every :hour do
  runner "Tasks::HogeTask.execute"
end

# cron型の指定
every '0 0 1-5 * *' do
  runner "Tasks::HogeTask.execute"
end