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

2014年2月26日水曜日

Rails + Herokuで最低限知っておくと良さそうなPostgreSQL(psql)コマンド

Rails + Herokuで最低限知っておくと良さそうなPostgres(psql)コマンド

ぽすぐれ…

Heroku は標準のデータベースとして PostgreSQL をサポートしています。
個人的に。OracleとかMySQLとかとかよりも。かなり馴染みがないのでいざ使うときにいちいち調べて四苦八苦します。。。
Rails + Heroku 使う時に最低限必要そうなものだけでも、まとめておこうと思います。

enter image description here

source: wikipedia


psql 準備

PostgreSQL インストール (mac brew)

brew install postgresql

データベースの初期化 (文字コードはUTF-8)

initdb /usr/local/var/postgres -E utf8

サーバ起動 (バックグラウンド)

postgres -D /usr/local/var/postgres >log/logfile 2>&1 &
# ログファイルなどは適宜編集

psql コマンド

コマンドライン

# データベース一覧
psql -l

# psqlにログイン
psql 'database名'

ログイン後のpsqlコマンド

-- データベース一覧
\l

-- データベース切り替え
\c 'database名'

-- テーブル一覧
\d

-- 終了
\q

# select文などは基本的に他のDBと同じ

参考: Homebrewを使ったPostgreSQLのインストール(Mac OS Lion) - Qiita


Written with StackEdit.

  • この記事をシェアする

  • このエントリーをはてなブックマークに追加
  • このブログの更新をチェックする

  • follow us in feedly

2014年2月24日月曜日

RailsでGithubリポジトリへのリンクを表示する

RailsでGithubリポジトリへのリンクを表示する

Railsでも自身のGithubリポジトリへのリンクを表示して、ダウンロードしてもらうなどのケースが度々見られます。その際にGithubリポジトリへのリンクを綺麗に表示させるには、「GitHub-jQuery-Repo-Widget」を使用します。GitHub-jQuery-Repo-WidgetはGithubへのリンクを美しく表示してくれるプラグインです。このプラグインをRailsで用いるには以下の手順で行います。

1. ファイルをダウンロードする。


こちらよりzipファイルをダウンロードします。zipファイルは画面右下のDownload ZIPからダウンロードすることができます。

2. jquery.githubRepoWidget.min.jsを移動する。

zipファイル解凍後は、フォルダ内のjquery.githubRepoWidget.min.jsを自身のRailsアプリ内のapp/assets/javascripts以下に移動します。

3. リポジトリリンクを表示するviewにタグを追加する。

リポジトリのリンクを表示したいviewに以下のタグを追加します。
<div class="github-widget" data-repo="junki929/brand-size-search"></div>
data-repoに表示したいユーザ名/リポジトリを設定します。上記の場合だと、junki929のbrand-size-searchが表示されます。


以上で完了です。タグを追加した箇所に以下のリポジトリへのリンクが表示されます。


GitHub-jQuery-Repo-Widgetを使用することによって非常に簡単かつ綺麗にリポジトリへのリンクを表示させることができました。



  • この記事をシェアする

  • このエントリーをはてなブックマークに追加
  • このブログの更新をチェックする

  • follow us in feedly

2014年2月20日木曜日

Rails4.0.2以上でi18nのdeprecated警告が表示される

deprecated警告

Railsのアップデートに伴い、セキュリティ面の関係でi18nの警告が出るようになりました。サーバーの起動時などに見られ、特に問題は無いようですがちょっと気になります…。実際に表示される警告は以下の通りです。
[deprecated] I18n.enforce_available_locales will default to true in the future. If you really want to skip validation of your locale you can set I18n.enforce_available_locales = false to avoid this message.

解決策

今まではi18nを導入する際、config/apprication.rbに「config.i18n.default_locale = :ja」のみを設定していましたが、今回からはさらに以下の一行をデフォルトロケールの上に記入します。
I18n.enforce_available_locales = true

以上で警告が表示されなくなります。
  • この記事をシェアする

  • このエントリーをはてなブックマークに追加
  • このブログの更新をチェックする

  • follow us in feedly

2014年2月19日水曜日

rake db:seedで文字コード(UTF-8)のエラーが発生する

文字コードエラー

Railsでrake db:seedを行った際に、以下のエラーが発生しました。
$ rake db:seed 
rake aborted! 
/Users/user/test_app/db/seeds.rb:15: invalid multibyte char (UTF-8) 
/Users/user/test_app/db/seeds.rb:15: invalid multibyte char (UTF-8) 
/Users/user/test_app/db/seeds.rb:15: syntax error, unexpected end-of-input, expecting '}' 
    name: 'oVAK', 
               ^
文字コードの指定はしているのですが、エンコードできていないらしくinvalid multibyte char (UTF-8)と言われてしまいます。解決策を調べたところこちらの以下の内容で解決することができました。

解決策

まず最初に「nkf」をbrew install。nkfは文字コードを変換することができます。JIS、EUC-JP、Shift-JIS、UTF-8などをかなり簡単に変換できます。
 $ brew install nkf
==> Downloading http://dl.sourceforge.jp/nkf/59912/nkf-2.1.3.tar.gz
######################################################################## 100.0%
==> make CC=clang
==> make install prefix=/usr/local/Cellar/nkf/2.1.3 MKDIR=mkdir -p
🍺  /usr/local/Cellar/nkf/2.1.3: 4 files, 348K, built in 5 seconds

次にインストールしたnkfを用いてseeds.rbを変換します。
$ nkf -w --overwrite seeds.rb
以上でseeds.rbがUTF-8に変換されました。再度rake db:seedを行うと問題なく通るはずです。


  • この記事をシェアする

  • このエントリーをはてなブックマークに追加
  • このブログの更新をチェックする

  • follow us in feedly

2014年2月18日火曜日

Railsでcookieを設定する

cookie

cookie(クッキー)とは、Webサイトの提供者がブラウザを通して訪問者の側に一時的にデータを保存させる仕組みです。Railsでもcookieの設定をすることができ、cookieは主にユーザーの識別に使用され、認証システムなどに用いられることも有ります。Railsでcookieを設定する場合は以下の書式で記述します。

書式
cookies[:クッキー名] = クッキー情報
クッキー名には任意のクッキー名を、クッキー情報には保存する情報を指定します。

使用例
cookieにuser_nameという名前でユーザーネームの"taro"を保存します。
cookies[:user_name] = "taro"

また、cookieにはオプションを指定することができます。指定できるオプションは以下の通りです。こちらより引用させていただきました。

オプション一覧
オプション説明デフォルト
:valueクッキーの値
:pathクッキーが有効なパス
:domainクッキーが有効なドメイン現在のホスト
:expiresクッキーの有効期限/
:secure暗号化通信でのみクッキーを送信false
:httponlyHTTPクッキーを有効false

  • この記事をシェアする

  • このエントリーをはてなブックマークに追加
  • このブログの更新をチェックする

  • follow us in feedly

2014年2月17日月曜日

bundle installでGemのインストール先を変更する

bundle install時にpathを指定する

ローカルなどで様々なアプリのGemをインストールする中で、bundle installを繰り返し行うと同一のシステム上にインストールされるために管理がしにくくなります。そこでbundle installでGemのインストール先を変更するために、bundle install時にpathを指定します。bundle installを行うときは任意のフォルダにまとめてインストールし、適宜管理して行くことをオススメします。

書式
bundle install --path 任意のフォルダ
bundle installに--pathオプションを付け、任意のフォルダを指定します。

使用例
app/vendor/bundlerにGemファイルをまとめてインストールします。
$ bundle install --path vendor/bundler
上記のコマンドでvendor/bundler以下にgemファイルがインストールされます。さらに一度上記のコマンドを入力すれば、以降bundlerがインストール先を記憶するので以下の通りでインストールできます。
$ bundle install
ちなみにbundlerは.bundle/configファイルでインストール先を記憶しています。


  • この記事をシェアする

  • このエントリーをはてなブックマークに追加
  • このブログの更新をチェックする

  • follow us in feedly

2014年2月14日金曜日

bundle installでERROR: Failed to build gem native extension.が発生する

bundle installでgemをインストールする際に以下のエラーが発生しました。ちなみにインストールしようとしたgemはcapybara-webkit (1.1.1)です。
$ bundle install
Fetching source index from https://rubygems.org/
Using rake (10.1.0)
…

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
Command 'qmake -spec macx-g++ ' not available

Gem files will remain installed in /Users/nishizakijuntakashi/workspace/sherpa.ag/vendor/bundle/ruby/2.0.0/gems/capybara-webkit-1.1.1 for inspection.
Results logged to /Users/nishizakijuntakashi/workspace/sherpa.ag/vendor/bundle/ruby/2.0.0/gems/capybara-webkit-1.1.1/./gem_make.out 

An error occurred while installing capybara-webkit (1.1.1), and Bundler cannot continue.
Make sure that `gem install capybara-webkit -v '1.1.1'` succeeds before bundling.

どうやらcapybara-webkit (1.1.1)のインストール時にExtensionBuildErrorが発生しているようです。capybara-webkit (1.1.1)がgem installできるのか試してみます。
$ gem install capybara-webkit -v '1.1.1' 
Building native extensions. This could take a while... 
ERROR: Error installing capybara-webkit: 
ERROR: Failed to build gem native extension. 

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb 
Command 'qmake -spec macx-g++ ' not available 

Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/capybara-webkit-1.1.1 for inspection. 
Results logged to /Library/Ruby/Gems/2.0.0/gems/capybara-webkit-1.1.1/./gem_make.out

やはりBuildエラーのようで通りません…。色々探してみてこちらの記事に行き着きました。記事を読んでみると、brew updateからのqtをインストールすれば通るとあります。試してみます。
$ brew update 
Updated Homebrew from e126ec92 to 95bedd4d. 
==> New Formulae
…
==> Deleted Formulae 
colormake erviz flume flume-ng libusbx scalate scrotwm

次にqtをインストールします。
$ brew install qt 
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/qt-4.8.5.mavericks.bottle.4.tar.gz 
######################################################################## 100.0% 
==> Pouring qt-4.8.5.mavericks.bottle.4.tar.gz 
==> Caveats 
We agreed to the Qt opensource license for you. 
If this is unacceptable you should uninstall. 

.app bundles were installed. 
Run `brew linkapps` to symlink these to /Applications. 
==> Summary 
🍺 /usr/local/Cellar/qt/4.8.5: 2780 files, 120M

インストールが完了したので、再度bundle installしてみます。
$ bundle install
Fetching source index from https://rubygems.org/
Using rake (10.1.0)
…
Installing capybara-webkit (1.1.1)
Your bundle is complete!
It was installed into ./vendor/bundle

成功しました!問題なくcapybara-webkit (1.1.1)がインストールされました。

まとめ

$ bundle install
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
↓
$ brew update 
↓
$ brew install qt
↓
$ bundle install
以上でエラーを解決することができます。

  • この記事をシェアする

  • このエントリーをはてなブックマークに追加
  • このブログの更新をチェックする

  • follow us in feedly

Railsでmigrationをロールバックする

Railsで一度行ったmigrationを戻すにはrake db:rollbackを使用します。rollbackはいつでも任意のバージョンへ戻すことができます。rollbackの書式は以下の通りです。

書式
rake db:rollback

rake db:rollbackでひとつ前のバージョンへ戻すことができます。rake db:versionでバージョンを確認してみると分かります。

ちなみにrollbackにSTEPを指定することで任意の回数バージョンを戻すことができます。STEPを指定する場合の書式は以下の通りです。

書式
rake db:rollback STEP=ステップ数

ステップ数に実際に戻したい回数を指定します。例えばステップ数に2を指定すれば2つ前の状態に戻ります。

  • この記事をシェアする

  • このエントリーをはてなブックマークに追加
  • このブログの更新をチェックする

  • follow us in feedly

2013年8月2日金曜日

ActiveRecord method override

アクティブレコードのメソッドをオーバーライドしたいと思い。しらべてみました。

たとえばアクティブレコード Ore が item をひとつだけ持っている場合の定義。

class Ore < ActiveRecord::Base
has_one :item

んで。この item をとる時になんかの処理をいれたい場合。alias_method を指定する。

alias_method :original_item, :item

こうすると original_item メソッドが元々のメソッドになる。ので、適宜かきかえてやる。

例えば。

nil の場合初期化したクラスを返すならこんな感じ。

def item
  self.original_item || Item.new
end

参考にしたのはこちら。

activerecord - rails override default getter for a relationship (belongs_to) - Stack Overflow

うむ。

Written with StackEdit.

  • この記事をシェアする

  • このエントリーをはてなブックマークに追加
  • このブログの更新をチェックする

  • follow us in feedly