さくらインターネットでRails(1日目)

Railsで、アプリケーションを作ろうと思います。その防備録です。
毎日、少しずつでもがんばるぞー。

(1) まずは、さくらのrubyバージョンを確認。

%ruby --version
ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-freebsd7]


(2) Railsインストールは、「Ruby on Rails入門3 さくらインターネットにRuby on Railsをインストール」を参考にしました。
http://nyon2.net/archives/2009/01/ruby-on-railsruby-on-rails.html

(3) rubygemsインストール

インストールディレクトリを作成

%cd
%mkdir lib
%cd lib
%mkdir src

最新版(2009/5/4)は、rubygems-1.3.3.tgz ようなので、これを下記サイトからダウンロード。Windowsから、さくらサーバにFTPでsrcにアップしました・・・。ダサ。
http://rubyforge.org/frs/?group_id=126

解凍、そしてセットアップ

%tar xzf rubygems-1.3.3.tgz
%cd rubygems-1.3.3
%ruby setup.rb --prefix=$HOME

自分の$HOMEにある.cshrcに下記を追加(の部分)。またもや、Windowsから修正・・・。

-------------------------------------------------
set path = (~/pear/bin /sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/
X11R6/bin $HOME/bin $HOME/lib/ruby/gem/bin)
setenv RUBYLIB $HOME/lib
setenv GEM_HOME $HOME/lib/ruby/gem
-------------------------------------------------

環境ファイルを読み込んで、バージョン確認

%source $HOME/.cshrc
%rehash
%gem18 --version
1.3.3


(4) Railsインストール

反応するまで、ちょっと時間かかるみたい。2~3分?・・・いや、お茶汲んでトイレ行って帰ってきても、まだ終わってませんでした。

%gem18 install rails

バージョンは、2.3.2でした。

%rehash
%rails --version
Rails 2.3.2


(5) Rails動作

Railsアプリケーションを作成します。

%cd
%mkdir Rails
%rails app1

logファイルとtmpファイルの権限を変える。

%cd app1
%chmod -R o+w log tmp

config/environment.rb を修正。下記を追加。XXXはさくらの各自サーバ。

-------------------------------------------------
$LOAD_PATH.push("/home/XXX/lib/")
$LOAD_PATH.push("/home/XXX/lib/ruby")
ENV['GEM_HOME'] ||= '/home/XXX/lib/ruby/gem'
ENV['RAILS_RELATIVE_URL_ROOT']="/app1"
-------------------------------------------------

次に、app1/READMEにある一部分をコピーして、public/.htaccess を新規作成。(Windowsでね。)
赤の部分、コメントアウトしました。

-------------------------------------------------
# General Apache options
#AddHandler fastcgi-script .fcgi
#AddHandler cgi-script .cgi
#Options +FollowSymLinks +ExecCGI

# If you don't want Rails to look in certain directories,
# use the following rewrite rules so that Apache won't rewrite certain requests
#
# Example:
#   RewriteCond %{REQUEST_URI} ^/notrails.*
#   RewriteRule .* - [L]

# Redirect all requests not available on the filesystem to Rails
# By default the cgi dispatcher is used which is very slow
#
# For better performance replace the dispatcher with the fastcgi one
#
# Example:
#   RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
RewriteEngine On

# If your Rails application is accessed via an Alias directive,
# then you MUST also set the RewriteBase in this htaccess file.
#
# Example:
#   Alias /myrailsapp /path/to/myrailsapp/public
#   RewriteBase /myrailsapp

RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]

# In case Rails experiences terminal errors
# Instead of displaying this message you can supply a file here which will be rendered instead
#
# Example:
#   ErrorDocument 500 /500.html

ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"
-------------------------------------------------

公開して見れるように、シンボリックリンクをはる。

% ln -s $HOME/Rails/app1/public $HOME/www/app1

速攻、ブラウザからアクセス。http://XXX.sakura.ne.jp/app1/
rails20090522

About your application’s environment をクリック。が~ん。エラーがでました。
rails20090522-1

railsインストールまでは、上手くいっているか?
どうやら、%rails app1 のときに、public/dispatch.cgi が作成されていないようなんですが・・・・。
明日、子供の運動会なので、ここで今日は終了。

WordPress ログインとログアウト

専用のログイン、ログアウトを作成する防備録。動作としては、下記を実現する

  • タイトルには「ログイン」をサイドバーに出し、「会員専用ログイン」のリンクを押すと、カスタマイズされたログインフォームへ移動する。
  • ログインすると、ユーザの種類によって、特定の記事を表示したり、ダッシュボードを表示する。
  • ログイン中は、タイトルに「ユーザ名」を表示させ、「会員専用ログイン」の部分は「ログアウト」のリンクを変更表示させる。
  • 「ログアウト」をクリックすると、現在表示中のURLのところのままでログアウトする。(現在のページにリダイレクト)

ログインする前

ログイン
会員専用ログイン

ログインした後

ユーザ名を表示
ログアウト

実現方法

  1. カスタマイズされたログインフォームを作成するには、プラグイン「BM Custom Login」を入れる。
  2. ログインユーザによって、ログイン後のリダイレクト先を振り分けるのは、プラグイン「Peter’s Login Redirect」を入れる。
  3. 残りは、下記のコードで実現する。

<?php
global $user_identity; //インクルードされたphpファイルでは必要な場合もあり。
if(is_user_logged_in()) {
?>
<h2><?php echo $user_identity; ?></h2>
<a href=”<?php echo wp_logout_url(site_url($_SERVER[“REQUEST_URI”])); ?>”>ログアウト</a>
<?php
} else { ?>
<h2>ログイン</h2>
<a href=”<?php bloginfo(‘url’); ?>/wp-admin/”>会員専用ログイン</a>
<?php
} ?>

※ログアウトする際に、現在のページにリダイレクトさせるのが、以外に難しかったかも。
NG ・・・ wp_logout_url(site_url($_SERVER[“HTTP_HOST”]. $_SERVER[“REQUEST_URI”]));
OK ・・・ wp_logout_url(site_url($_SERVER[“REQUEST_URI”]));

特定の記事のスタイルシートを定義

カスタムフィールドを使った特定記事のスタイルシート定義

<?php
$OptionCSS = '';
if (have_posts()) : while (have_posts()) : the_post();
    if ($Tmp = get_post_meta($post->ID, 'CSS', true)) $OptionCSS .= $Tmp . "\n";
endwhile; endif;

if ($OptionCSS) {
    $EchoOptionCss = <<<EOM
<style type="text/css">
{$OptionCSS}
</style>\n
EOM;
    echo $EchoOptionCss;
}
?>
<table class="ExampleTbl" border="0">
<tbody>
<tr>
<th>キー</th>
<th>値</th>
</tr>
<tr>
<td>CSS</td>
<td>table.ExampleTbl {
    margin: 1em 20px 1em 180px;
    border-collapse: collapse;
}
table.ExampleTbl th ,
table.ExampleTbl td {
    padding: 2px 6px;
    border: 1px solid #bcc;
}
table.ExampleTbl th {
    color: #366;
    background: #def;
}</td>
</tr>
</tbody></table>

http://weblogs.tail-lagoon.com/WebPC/2008/06/13/30/

今年、初めての釣行

今年初めて、子供と新潟東港へ釣りへ。東港は、1m級のスズキが連れるところで有名です。

まだまだ、早いか!?・・・と思いきや、結構、釣れました。

確かに、当たりは殆どなかったのですが、1匹、巨大アイナメが・・・。

釣れたと言いたいのですが、近くで黒鯛釣りをしていたおじさんが釣り上げたアイナメを見に行って、子供が欲しそーな眼差しを投げかけ、見事、ゲットしたものです。

家に帰って、半分、刺身にして食べたら。。。うっまい。
アイナメの刺身は、初めてかもしれませんが、うまいです・・・。