ラベル Ruby On Rails の投稿を表示しています。 すべての投稿を表示
ラベル Ruby On Rails の投稿を表示しています。 すべての投稿を表示

2013/09/30

[Rails] WebMock::NetConnectNotAllowedError: ・・・・なんすかこれ。。

RoRで アプリから httpのAPIへ post送信する プログラムを実装してたら
わけわからんエラーでハマった


#<WebMock::NetConnectNotAllowedError: Real HTTP connections are disabled. Unregistered request: POST http://~(APIのURL)


なんぞ?

ググりまくったら とあるスレッド発見

Trying to get selenium working in rails 3 - "WebMock::NetConnectNotAllowedError" - Stack Overflow http://stackoverflow.com/questions/5980856/trying-to-get-selenium-working-in-rails-3-webmocknetconnectnotallowederror


↑Answersを グーグル先生翻訳

あなたはwebmockを使用しているからだ。これは、すべての発信HTTP要求をブロックします。

あなたがそれを必要としない場合は、Gemfileからそれを削除してください。あなたがそれを必要としない場合は、あなたのニーズに、より正確にそれを設定する必要があるかもしれません:


あんだって????

Gemfileを確認したら たしかに webmock が developmentに設定されていた
しかも動作確認は  RAILS_ENV=developmentでやってた・・・

RAILS_ENV=production で起動しなおし、動作した こんなことだったなんて・・・

2012/12/08

[Rails] 現在時刻・1分前の時刻・1分後の時刻


railsコンソールで確認。(鯖はUTC)

1.9.1 :053 > now=Time.zone.now; ago=Time.zone.now.ago(60); after=1.minutes.from_now;
1.9.1 :054 >   now.to_s + '  |  ' + ago.to_s + ' | ' + after.to_s
 => "2012-12-08 16:09:41  |  2012-12-08 16:08:41 | 2012-12-08 16:10:41"

同じように書けないの・・・・?うーん

2012/12/05

[Rails] 日付データの取り扱い:DB保存のタイムゾーンと、表示時のタイムゾーンを別にしたい時

DB保存はUTCで、画面表示時はそれぞれのタイムゾーンで(例えばJSTで)とか

Rails3 だと config/application.rb で 保存するタイムゾーンと 画面表示時に使うタイムゾーンを分けて設定できる

↓保存時のタイムゾーン

config.active_record.default_timezone = :local
※設定しない場合は default='utc'


↓表示時のタイムゾーン


config.time_zone = 'Tokyo' 
※Controllerで ユーザのタイムゾーンを↑切り替えれば 指定のタイムゾーンで表示される(はず)



ただし、↑この便利な設定の恩恵にあずかるには、保存する 日付フィールドを ただのTimeで保存してはダメ
ActiveSupport::TimeWithZoneクラスにする必要がある


start_at = Time.parse("入力された日付")
↑とかだと Timeクラスになっってしまう(コンソールとかで確認できる)


start_at = Time.zone.parse("入力された日付")
↑常に Time.zone を使うようにしないとダメ



参考)
Rails3系のtimezoneの扱いに関するメモ #Rails - Qiita http://qiita.com/items/68341489a9c5149b815d

[Rials3]Rails3 + ActiveRecord で正しくtimezoneを設定する - Future Journal ~未来志向で行こう~ http://d.hatena.ne.jp/twodollarz/20120703
















2012/12/03

[Rails] 便利なメソッド

・try()

nilでないときだけメソッドを実行

<%= user.updated_at.try(:strftime,'%Y/%m/%d') %>


・_was

<attr>_was <attr>の変更前の値。変更されてなかったら元の値。

<% if user.updated_at_was.present? %>
 <%= user.updated_at.try(:strftime,'%Y/%m/%d') %>
<% end %>

2012/10/24

[Ruby][Rails3] クラスのインスタンスメソッドとスタティックメソッド

rubyでは スタティックなメソッドを クラスメソッドと呼ぶそうだ

参考)
クラスのメソッド - satake7’s memo http://d.hatena.ne.jp/satake7/20090124/p1


その他、参考になりそうなもの)
class_attribute:
class_inheritable_accessorからclass_attributeに移行する際の注意点 - odeの開発メモ日記 http://d.hatena.ne.jp/ode/20110928/1317188311

2012/10/16

[Rails3] コントローラー名・Model名とか 複数形とか単数形とか

・Controller名
view内
<%= controller.controller_name %>

Controller内
ctrlname = controller_name  # コントローラ名

・Model名
<%= controller.model_name %>

・action名
<%= controller.action_name %>

・Controller名を単数形にしたい(.singularize)
controller.controller_name.singularize

・複数形  .pluralize

参考)
Rails3 事始め: [Rails3] Viewでコントローラ名/アクション名を取得する http://rails3try.blogspot.jp/2011/06/rails3-viewcontrolleraction.html

Ruby On Rails | くるくるtech http://kurukuru-labo.com/tech/category/ruby-on-rails/

2012/09/18

[Rails3] before_validationとかの中で ARオブジェクトのカラムごとの値を確認する

入力フォームの中に チェックボックスとかあって、
チェックされれば 送信されてくるし、
されなければ 値は渡って来なかったりするときの
値が存在するかー?の確認

if read_attribute('delete_flg').present?

'delete_flg'は formのnameの部分(カラム名的な)

↓こんなな
<input type="checkbox" name="delete_flg" value="1">

write_attributeとかもあるらしい

参考)
ActiveRecordまとめ2 - ほむり http://d.hatena.ne.jp/jksy/20100512/1273658658
respond_to http://d.hatena.ne.jp/rochefort/20110508/p1


2012/04/15

Railsの予約語の多さときたら・・・

テーブルの中に 「type」って名前のカラム作って 詰んで、
今度は 「Process」プロセスって名前のModel作ろうとしたら怒られて・・・

予約語なのかなー と思いつつ
エラーもわかりづらいし
ネットで調べても 日本語で予約後一覧がまとまっているページがない・・・

本家Wiki内に 「Reserved Words You Can’t Use」ってページをやっと見つけた
がしかし、このページもまた 参照の仕方がわからなくて、数分費やしたよ・・・なんでRubyとか Rails関連のドキュメントって、見やすくまとまってないの???
Rubyの本家のリファレンスも、索引つけるか、検索ぐらいできるようにしてよ
はぁ・・・

http://wiki.rubyonrails.org/rails/pages/reservedwords
(下の方の show pageボタンみたいのを押すとみられる)





rails g コマンドで 間違って作ったモデルを関連ファイルごと削除する

  • 環境:Rails3
$ rails destroy model [モデル名]

参考)
Railsコマンドでgenerateしたのを取り消したい場合(メモ) | shinodogg.com - http://shinodogg.com/?p=3341


2012/04/12

DBから取ってきた ARオブジェクトを 必要な数だけ切り出す

  • 環境:Rails3
いわゆる、あれです
PHPで言うarray_sliceですよ

    users= User.find(:all, :conditions=>[" ~省略
    
    #全体の件数
    puts('count [' + users.size.to_s + ']')
    #先頭から 3つ切り出す
    puts(users.slice(0..2).to_yaml)




2012/04/10

I18nで国際化対応 − 翻訳メッセージに 変数を使う

  • 環境:Rails3
I18n.backend.store_translations :en, :thanks => 'Thanks %{name}!'
I18n.translate :thanks, :name => 'Jeremy'
# => 'Thanks Jeremy!'

変数を入れたい部分に %{変数名}を入れる

公式ガイド:


国際化 参考ページ↓
※変数を使用する部分が{{変数名}}で間違っているけど、その他の部分は概ね参考になる 公式ガイド(英語)と見比べるのがよろしい


こちらは基本的なところがわかりやすくまとまっております↓


コードの中に日本語を書くとエラーになるときの おまじない


  • 環境:Rails3

コードの中に日本語・・・
まあたとえば、

a = 'こんにちは'

↑的な?(試してないけど)

とにかく エラーが出ないためのおまじない



# encoding: utf-8

もしくは

# -*- coding: utf-8 -*-




を、ファイル頭に書く


参考)
Rails3 事始め: [Rails3] コードに日本語を書くとエラーになる件 - http://rails3try.blogspot.jp/2011/12/rails3_26.html


2012/04/07

削除されたものも検索したい時 「unscoped」を使う

論理削除とか使ってたりするときね

class Diary < ActiveRecord::Base
  # 論理削除
  default_scope where(:deleted_at => nil)


削除されたものも検索したい時 「unscoped」を使う
  # いつもの検索 deleted_at is null がSQLに付く
  Diary.find(:all, :conditions=>["id=?", id], :order=>"updated_at DESC")
  # 削除あり検索
  Diary.unscoped.find(:all, :conditions=>["id=?", id], :order=>"updated_at DESC")

ActiveRecordオブジェクトを そのままハッシュに入れたい時

 ActiveRecord(AR)オブジェクトは
各オブジェクトごとの値を attributes っていうHashで保持しているらしい

  user = User.find_by_user_id(params[:user_id])
  logger.debug(user.to_yaml)#←中身デバッグ

・DEBUGは↓こんな感じ
[DEBUG] --- !ruby/object:User
attributes:
  id: '1'
  name: username
  deleted_at: !!null 
  created_at: '2012-04-07 03:32:09'
  updated_at: '2012-04-07 13:41:55'
changed_attributes: {}
previously_changed: {}
attributes_cache: {}
marked_for_destruction: false
destroyed: false
readonly: false
new_record: false


attributesは
1件しかないARオブジェクトだったら
→ user.attributes

複数取れるARオブジェクトだったら
(プライマリキーで取得できる件数が必ず1件だったとしても find(:all 〜 とかで取得するとこっちになると思われ)
→ user[0..N].attributes

2012/03/25

MacでEclipseでRubyOnRails開発環境

ちなみに、環境は Eclips Indigo (3.7.2) for MacOS X です

EclipseでのRails開発のために プラグインでRadRailsを 入れる
AptanaのRadRailsの公式サイトへ行く → Aptana RadRails

ダウンロードページへ行って、You are about to download:で、Eclipse Plug-in Versionを選択してDownloadボタンを押す
(NameとかEmailとかは 別に入れなくて平気)


次のページで、プラグインDL用のURLが表示されるので クリップボードにコピー


イクリプスの新規ソフトウェアのインストールでさっきのURLを入力


Aptana Studio 3 Pluginを選択してインストール開始
このプラグインでPHPとかの環境もいっぺんに入っちゃうみたい
Ruby環境だけで良かったんだけど、Rubyだけ選ぶことはできないみたい


インストール終わったら再起動


再起動したら なんか英語で言われたけど
よくわかんないので 続行にしといた
追記:FireFox使ってよ!みたいなメッセージだと解釈したので、「参照...」から、ローカルのFireFox.appを選択してあげたら次回起動からこのメッセージは出なくなったよ。


で、無事Aptanaのwelcomeページ


Rubyファイルも 無事認識されて、シンタックスハイライト表示もOK〜


参考)
Eclipse+aptana RadRailsプラグインでGetting Started with Rails その1
 - 全体的にガッとなっていたblog - http://d.hatena.ne.jp/N_Oda/20091213/1260685529

追記:
RadRailsだけのダウンロード先は↓こっちだった (´・ω・`)
http://www.aptana.com/products/radrails/download
ま、いっか。