タグ

ブックマーク / satake7.hatenadiary.org (5)

  • MySQL server has gone away エラー - satake7’s memo

    常時起動している Rubyスクリプトで「MySQL server has gone away」というエラーが出てビビリました。ActiveRecord使ってるからいけないのかとか、自分の書き方が悪くて(Rubyが)メモリリークしてるんじゃないかとか、簡単に解決しそうにない方向に想像がいってしまったのですが、ググればすぐ解決方法が見つかりました。「案ずるより産むが易し」、「心配するくらいならググれ」ですね。 どういうエラーか MySQLのリファレンスマニュアルによると、「MySQLサーバはデフォルト設定では、何も起きない状態が 8 時間続くと接続をクローズします」だそうです。接続がクローズされた状態で MySQLサーバにアクセスにいくと「MySQL server has gone away」となるわけです。 どうするか 8時間、誰もアクセスしないということ自体、サイトの運営としてどうなの? 

    MySQL server has gone away エラー - satake7’s memo
    suginoy
    suginoy 2014/02/19
  • ActiveSupportのHash拡張 - satake7’s memo

    認証系のソースを読んでいると『options.reverse_merge! :title => ip_addr』というのが出てきて、こんなの Rubyにあったっけと思って調べたら、やっぱ Rubyにはなくて ActiveSupportのクラス拡張でした。せっかく調べたのでまとめ。 Hash#reverse_merge, Hash#reverse_merge! Hash#merge(こちらは Rubyに元々あるメソッド)の逆。mergeはキーが重複する場合、値を置き換えるが、reverse_mergeはキーが重複する場合、値を置き換えない。 用途としてこれは便利だとパッと思いつくものはないんだけど、強いてあげれば、初期値のセット(2回目以降の値はセットしない)とか、デフォルト値のセット(値を書き換えない)くらいかな。 options = { :a => 1, :b => 2, :c => 3

    ActiveSupportのHash拡張 - satake7’s memo
  • コントローラとヘルパでメソッドを共有 - satake7’s memo

    コントローラとビューで同じメソッドを使いたいことがわりとあります。Validationとか文字列変換とか。そういうとき、コントローラ部(application.rb)に置くか、ヘルパ部(application_helper.rb)に置くか悩むところですが、メソッド自体はたぶん軽量なので(決め付け)、ヘルパに置くことにしています。 呼び出し方 application_helper.rbに置いてあるので、ビューで使う分には何の問題もありませんが、コントローラから使おうとすると、『NoMethodError』になってしまいます。 class SessionsController < ApplicationController include ApplicationHelper def is_another_ipaddress? if is_right_ipaddress? # ← これがヘルパの

    コントローラとヘルパでメソッドを共有 - satake7’s memo
  • link_to で画像にリンクを張る - satake7’s memo

    文字列はいいけど、画像にリンクを張るのってどうやるんだっけと思ったのでメモ。 link_to と image_tag そのまんまでした。 <%= link_to image_tag('/images/newreg.png', { :border => '0', :alt => '新規登録'}), new_user_path %> link_toに image_tagを渡すだけ。「:border => '0'」にしているのは、リンクの枠が出るのが嫌だから。 書くほどのこともないけど実際忘れていたので、次また忘れている可能性が高いからメモ。

    link_to で画像にリンクを張る - satake7’s memo
  • cron(crontab)の簡単な使い方 - satake7’s memo

    あるプログラムで「loop do ???; sleep 1800 end」みたいなことを書いてて、「これっておかしくないか?」とハタと気がついたわけです。なにも無限ループを回さなくたって、cronに任せちゃえばいいじゃないか。 cronの設定確認 「crontab -l」で現在の設定が表示されます。なければ「no crontab for xam」と言われます。これ(↓)はあった場合の例です。 $ crontab -l SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/gems/1.8/bin RAILS_ENV=production # m h dom mon dow command */30 * * * * ruby /home/www/2.5-55.jp/

    cron(crontab)の簡単な使い方 - satake7’s memo
    suginoy
    suginoy 2008/09/13
  • 1