Archive for: 𔃱月 2012’

Active Recode による複雑なアソシエーション

2012年1月26日 Posted by PURGE

かなりハマったので覚書。
下記のようなテーブル構成。

Prefectures (都道府県マスタ)
 id
 prefecture_name

Users (ユーザマスタ)
 id
 user_name
 current_prefecture_id (現住所)
 birth_prefecture_id (出身地)

やりたいことは、ユーザマスタの現住所と出身地の都道府県名を、都道府県マスタから取得したいということ。
結論から言うと、下記のようにアソシエーションをmodelクラスに定義する。

prefecture.rb

class Prefecture < ActiveRecord::Base
  has_many :user
end

user.rb

class User < ActiveRecord::Base
  belongs_to :prefecture
  belongs_to :current_pref, :class_name => "Prefecture", :foreign_key => "current_prefecture_id"
  belongs_to :birth_pref, :class_name => "Prefecture", :foreign_key => "birth_prefecture_id"
end

で、参照は下記のよう。

#現住所
  user.current_pref.prefecture_name
#出身地
user.birth_pref.prefecture_name

何にハマったかというと、アソシエーションの定義方法。

belongs_to :"current_pref" #呼び出す為の任意のエイリアス名 
:class_name => "Prefecture" #対象クラス名
:foreign_key => "current_prefecture_id" #外部キー対象項目名

しかも、対象クラス名のイニシャル文字を、小文字で書いていた。
しっかりと、アソシエーションの定義方法とオプションの意味を覚えましょう。

できてみると、SQLを記述するよりも、取得と表示がとても便利。すごいな。

参考までに。

Railsで取得したデータとそのハッシュが表示される

2012年1月23日 Posted by PURGE

ハマった件。なぜかrailsの viewにて、データとその下にハッシュ形式で重複表示されてしまう。
結論から言うと、タグの記述が間違っていた。

#間違い
<%= @timelines.each do |timeline| %>

#正式
<% @timelines.each do |timeline| %>
    #コンシューマキーとトークンを設定
    Twitter.configure do |config|
        config.consumer_key = consumer_key
        config.consumer_secret = consumer_secret
        config.oauth_token = token
        config.oauth_token_secret = token_secret
    end

    #タイムライン取得
    @timelines = Twitter.user_timeline(twitter_id)
<h2>TimeLines</h2>
<% @timelines.each do |timeline| %>
<div>
	<%= timeline.user.screen_name %>
	<%= timeline.text %>
</div>
<% end%>

Twitter4R Twitter::ForbiddenError

2012年1月20日 Posted by PURGE

Twitter4Rを使用して開発を進めていたが、どうしても下記の現象で諦めざるを得ない状況となったようだ。

twitter = Twitter::Client.new(oauth_access: { key: token, secret: token_secret})

#これらのメソッドは動作する
twitter.status(:post, "POST TEST!!!")
twitter.friend(:add, "twitter_user")

#これらのメソッドは ForbiddenErrorとなる
friends = twitter.my(:friends)
friends = twitter.user.friends

結局、twitter4r(0.7.0) をアンインストールし、twitter-2.0.2 を代わりにインストールして再開発。これでうまくいくのかわからないが、取りたかった情報(friends/ids)は取れた。

後日、記述予定。

C:works>gem list twitter
*** LOCAL GEMS ***
twitter4r (0.7.0)

C:works>gem uninstall twitter4r
Remove executables:
        t4rsh, t4r-oauth-access

in addition to the gem? [Yn]  y
Removing t4rsh
Removing t4r-oauth-access
Successfully uninstalled twitter4r-0.7.0

C:works>gem install twitter
Fetching: addressable-2.2.6.gem (100%)
Fetching: multipart-post-1.1.4.gem (100%)
Fetching: faraday-0.7.5.gem (100%)
Fetching: simple_oauth-0.1.5.gem (100%)
Fetching: twitter-2.0.2.gem (100%)
********************************************************************************

  You should follow @gem on Twitter for announcements and updates about the gem.
  https://twitter.com/gem

  Please direct any questions about the library to the mailing list.
  https://groups.google.com/group/ruby-twitter-gem

  Does your project or organization use this gem? Add it to the apps wiki!
  https://github.com/jnunemaker/twitter/wiki/apps

********************************************************************************
Successfully installed addressable-2.2.6
Successfully installed multipart-post-1.1.4
Successfully installed faraday-0.7.5
Successfully installed simple_oauth-0.1.5
Successfully installed twitter-2.0.2
5 gems installed

stackoverflow.com

tnsnames.ora 記述方法

2012年1月17日 Posted by PURGE

# tnsnames.ora Network Configuration File: C:oracleproduct11.1.0orahomenetworkadmin.ora
# Generated by Oracle configuration tools.

MYDB_LOCAL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = MYDB)
    )
  )

MYDB_SERVER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = server_name)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = MYDB)
      (SID = MYDB)
    )
  )

IEの条件付きコメントについて

2012年1月13日 Posted by PURGE

いまさらながら、覚え書き。

<!--[if IE]>
    IEでのみ表示される
<!--[endif]>
<!--[if gte IE 6]>
    IE6以降でのみ表示される
<!--[endif]>
<!--[if !IE]>
    IEでは表示されない
<!--[endif]>

Rails configatron の設定と使用方法

2012年1月11日 Posted by PURGE

開発環境と本番環境の設定値を、その環境に拠って実行時に変えたい。
configatron というものを発見。

まずは、gem でインストール

$gem install configatron

plugin をインストールすると、自動的にconfigファイルや初期ロードファイルが作成されるらしいが、インストール時にエラーとか発生して面倒だったので、手動にて下記ファイルを作成する。

config/initializers/load_config.rb

configatron.configure_from_yaml("config/config.yml", :hash => Rails.env)

config/config.yml

development:
  hoge: 開発環境だよ。
test:
  hoge: テスト環境だよ。
production:
  hoge: 本番環境だよ。

app/controllers/hello_controller.rb

    hello = configatron.hoge

これだけで環境によってパラメータを変えられる。

config/initializers/load_config.rb が読み込まれるのはサーバ起動時らしいので、設定したら再起動を忘れずに・・・。
実は、ずっと値が取得できずに丸1日ハマっていた。

コマンドラインでのsvn checkout

2012年1月11日 Posted by PURGE

svn checkout file:///var/www/svn/repos/project .

お気に入りeclipseプラグイン

2012年1月10日 Posted by PURGE

eclipseプラグインのダウンロードサイト

■Seasar2
http://www.seasar.org/updates.html

eclipseプラグインのアップデートサイト

■Subclipse
http://subclipse.tigris.org/update_1.8.x

■ER Master
http://downloads.sourceforge.net/project/ermaster/ermaster

■DB Viewer
http://www.ne.jp/asahi/zigen/home/plugin/dbviewer/

■Oracle
http://download.oracle.com/otn_software/oepe/helios
http://download.oracle.com/otn_software/oepe/indigo

Could not find the main class: eclipseエラー

2012年1月10日 Posted by PURGE

長年使用しているeclipseで突然のエラー。
Adobeのお試し版のアンインストールで環境変数が削除されたのが原因らしいが、eclipseを起動するたびにエラーポップアップの嵐。

Could not find the main class:
org.eclipse.jdt.internal.launching.support.LibraryDetector.
Program will exit.

丸1日ハマって、対処方法は下記のうち1つを設定すること。

環境変数に、JAVA_HOME を設定する
または
環境変数 %PATH%に、%JAVA_HOME%bin を設定する
または
eclipse.ini に、-vm %JAVA_HOME%binjavaw.exe を設定する

自称Javaエキスパートですら、こんな基本的な部分に落とし穴。
だって、eclipse の環境設定では、インストールされている jre 欄にちゃんと上記の設定は認識しているものだから、当然のようにeclipseは認識していると思っていた。
全くのノーマークだった。

お恥ずかしい。

AptanaStudio3 でのRailsのデバッグ

2012年1月6日 Posted by PURGE

今更ながら、AptanaStudio3で、Railsアプリケーションのデバッグ環境でのエラー対処方法を記す。ちなみに開発環境は下記。
WindowsXP
Ruby1.9.2
Rails 3.1.3

C:>gem install ruby-debug-ide19
Fetching: columnize-0.3.6.gem (100%)
Fetching: archive-tar-minitar-0.5.2.gem (100%)
Fetching: ruby_core_source-0.1.5.gem (100%)
Fetching: linecache19-0.5.12.gem (100%)
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
Fetching: ruby-debug-base19-0.11.25.gem (100%)
Building native extensions.  This could take a while...
Fetching: ruby-debug-ide19-0.4.12.gem (100%)
Successfully installed columnize-0.3.6
Successfully installed archive-tar-minitar-0.5.2
Successfully installed ruby_core_source-0.1.5
Successfully installed linecache19-0.5.12
Successfully installed ruby-debug-base19-0.11.25
Successfully installed ruby-debug-ide19-0.4.12
6 gems installed
Installing ri documentation for columnize-0.3.6...
Installing ri documentation for archive-tar-minitar-0.5.2...
Installing ri documentation for ruby_core_source-0.1.5...
Installing ri documentation for linecache19-0.5.12...
Installing ri documentation for ruby-debug-base19-0.11.25...
Installing ri documentation for ruby-debug-ide19-0.4.12...
Installing RDoc documentation for columnize-0.3.6...
Installing RDoc documentation for archive-tar-minitar-0.5.2...
Installing RDoc documentation for ruby_core_source-0.1.5...
Installing RDoc documentation for linecache19-0.5.12...
Installing RDoc documentation for ruby-debug-base19-0.11.25...
Installing RDoc documentation for ruby-debug-ide19-0.4.12...

C:>gem install ruby-debug19
Fetching: ruby-debug19-0.11.6.gem (100%)
Successfully installed ruby-debug19-0.11.6
1 gem installed
Installing ri documentation for ruby-debug19-0.11.6...
Installing RDoc documentation for ruby-debug19-0.11.6...

C:>gem install builder
Successfully installed builder-3.0.0
1 gem installed
Installing ri documentation for builder-3.0.0...
Installing RDoc documentation for builder-3.0.0...

eclipse上にて、プロジェクトを指定して、右クリックのDebug Server を実行する。
サーバの起動には結構時間が掛かるが、コンソール画面には以下が表示される。


基本的にはこれでデバッグできるはず。