前回の続き。
違うユーザでコネクトできたから OKとしてましたが、実際テーブルの操作をしようとするとエラーになったので、対処。

# ruby test.rb
/usr/lib/ruby/gems/1.8/gems/dbd-pg-0.3.9/lib/dbd/pg/statement.rb:62:in `execute': ERROR:  permission denied for relation dtb_contact (DBI::ProgrammingError)

#irb
> require 'rubygems'
> require 'dbi'
> dbh = DBI.connect("dbi:Pg:test_db:localhost", "test_user", "test_pass")
> dbh.select_all("SELECT * FROM dtb_contact") {|row| p row }
DBI::ProgrammingError: ERROR:  permission denied for relation dtb_contact

DBへは接続できるけど、テーブルをリードするパーミッションがないよと。
ま、当然ですね。DBの ownerと違うユーザでコネクトしてるんですから。じゃあ、パーミッションを出しておきます。

# psql test_db -U test_db_owner
> grant all on dtb_contact to test_user;
GRANT

これで本当に OKです。

 
Rubyから PostgreSQLを使おうとして、ちょっとつまづいたので、後進の人のためにメモ。
入れようとした環境はこんな感じ。

  • Ubuntu 9.04(サーバ版)
  • ruby 1.8.7
  • Rails (2.1.0) + passenger (2.0.1)
  • psql (PostgreSQL) 8.3.9

つまり、少し古い Rubyと Railsが動いていて、かつ、PostgreSQLも動いていて、いま動いているものは変えたくないということ。
 
さらに読む

 
Twitterのクライアントとして、高機能で評判の HootSuiteを入れたんですが、2つ目、3つ目のアカウントの追加の仕方に迷ったので、メモ。
手順は次の通り。

  1. 画面左上のフクロウをクリック
  2. 設定 ⇒ SNS
  3. SNSを追加
  4. Twitter プロフィールを追加

Facebookや LinkedInのアカウントの追加もこの画面でやるので、SNSと書いてあるんでしょうが、ボクにはわかりづらかったです。
設定 ⇒ アカウントのあたりでずいぶんウロウロしてしまいました。

 
いつもいつもなんだっけとなって、ググることになるので、自分用のメモ。ググるんならココをググれと。

  1. 
    
  2. 
      location.replace('http://hoge.jp/');
    
    
  3. # e .htaccess
    Redirect permanent /index.html http://hoge.jp/index.php
    

自分としてよく使う順に。自分で全部いじれる場合は、headerに metaを入れますね。
ただ、サイト引越しで、301リダイレクトを返してやらないといけない場合は、3の .htaccessが安全確実。
カラーミーのように、headerがいじれない場合は仕方がないので、2の javascriptで。
こんな感じです。

スーパー小っちゃなTipsなので、書くかどうか迷ったのですが、7月はブログ強化月間ですので(今決めました)、この手のことを書かないで何を書くということで書いておきます。
 
EC-CUBEの新着情報に、<a href=”hogehoge.com”>お得な情報</a>みたいなリンクを書こうと思っても、<や>が <、> に変換されてしまってリンクになりません。
危ないことされたら嫌だからというのはわかりますが、コメント欄みたいに誰が書くかわからないならいざ知らず、新着情報って管理画面からしか書けないし、ESCAPEしなくていいんじゃないの?ということです。

# e data/Smarty/templates/default/bloc/news.tpl

<!--{$arrNews&#91;data&#93;.news_comment|escape|nl2br}-->
          ↓
<!--{$arrNews&#91;data&#93;.news_comment|nl2br}-->

Smartyの escapeをとればいいということですね。
 
ついでにコレも。Smartyで var_dumpみたいなことをやるときはコレ。


 
カラーミーというより、Smartyの Tipsですが。
文字列の先頭何バイトかを判断して分岐したいケースがよくあります。substr くらいあるんじゃね?と思った貴方。甘いです、激甘です。そんなの Smartyにはないんです。
と、ここまで書いて、言い切っていいのか?と怖くなってググってみたらありました。orz

すべてのPHP関数は、暗黙的に修飾子として使用でき、修飾子は組み合わせることもできます。
{$ym|substr:0:4}

あるんです! あるんですよ、貴方。
と、ここまで書いて、ほんとか? カラーミーで使えたか? と思って試してみました。

Fatal error: Smarty error: [in file:2/product.tpl line 89]:
 [plugin] (secure mode) modifier 'substr' is not allowed (Smarty_Compiler.class.php, line 1905)
 in /home/sites/shop-pro.jp/web/app/libs/smarty/Smarty.class.php on line 1088

やっぱ、カラーミーでは使えませんでした。
ということで、本題に戻ると『文字列の先頭何バイトかを判断して分岐したいケース』をカラーミーではどう書くかです。

&lt;{if $object|truncate:7:&quot;&quot; == &quot;

こうやって書くんですねぇ。ちなみに、truncateの最後の””をつけないと、$object|truncate:7 は、”<object…”を返してくるので、このIF文は falseになります。(悩みました)