RubyOnRailsでGemを入れてみた


```
開発環境
・Rails v4.0.0
・Ruby  v2.0.0p195 (2013-05-14) [i386-mingw32]
```

# ■ 論理削除をする用のGem
使用Gem：[kakurenbo](http://alfa.hatenablog.jp/entry/2014/01/26/225852)

## インストール

`gem install "kakurenbo"`で最初はインストールしました。よろしくなかった。
『最新版入れたのに動かない！？』ってなりました。Bundleを使う方法でインストールし直しても動かず。

 **結論**
 * 自分のRailsのバージョンとkakurenboのバージョンが合ってませんでした。
 * gem installで入れた後にBundleで入れたので、２つのバージョンが入っている状態になっていました。
　ので、一旦 `gem uninstall kakurenbo` でアンインストした後にBundleで入れました。
　対応するバージョンが入ってくれたよかった^^
　サーバー再起動しないと反映されなかったりするようですね！なるほど！

## 論理削除処理

getで削除対象idを渡しているので、そのまま検索条件にセットして、
”kakurenbo”の関数`.destroy_all`で論理削除しています。
私はRails4.0.0なのでこの書き方で問題ありませんが、Rails4.0.2では
導入する"kakurenbo"のバージョンが違うので書き方が異なります！
これは [本家様のHP](http://alfa.hatenablog.jp/entry/2014/07/12/054219) にて確認してください。

```code:m_users_controller.rb
  def delete
    if MUser.where(:id => params[:user_id]).destroy_all
      redirect_to :m_users, notice: '削除しました。'
    else
      redirect_to :m_users, notice: '削除に失敗しました。'
    end
  end
```

## リストア
```lang:m_users_controller.rb
  def restore
    MUser.restore(params[:user_id])
    redirect_to :m_users
  end

```
`モデル名.restore(レコードid)`のみ！簡単にかけますね！



# ■ ページング用のGem
使用Gem：[kaminari](https://github.com/amatsuda/kaminari)
参考サイト：[Railsライブラリ紹介-ページングを行う「kaminari」](http://www.techscore.com/blog/2013/01/07/railsライブラリ紹介-ページングを行う「kaminari」/)
　　　　　　[Kaminariで超お手軽にページネートを実装する。](http://d.hatena.ne.jp/Naruhodius/20120113/1326422433)

## インストール
Gemfileに`gem "kaminari"`を追加し、コマンドプロンプトから`bundle install`で問題なく追加されました。

## ページング処理


### データ取得
`モデル名.page(ページ数).order(ソート対象項目)`
ひとまず自分はこれだけで。`.per(表示件数)`など他にもオプションがあるようです。

```lang:m_users_controller.rb

  def index
    if params[:page].nil?
      $page = 1
    else
      $page = params[:page]
    end

    @m_users = MUser.page($page).order(:id)
  end

```

### デフォルト設定

モデルや設定ファイル( `rails generate kaminari:config`で生成される )で表示件数などのデフォルト設定ができる。

```lang:models/m_user.rb
5| # デフォルト表示件数
6| paginates_per 5
7| 
```

### ビューにページングリンクを生成
リンクを表示させたい位置に` <%= paginate(データの入った配列) %> ` を記載するだけ。

```lang:views/m_users/index.html.erb

<div><%= link_to "登録", {:action => "add"} %></div>
<table>
  <th>ID</th>
  <th>名前</th>
  <% @m_users.each do |m_user| %>
    <tr>
      <td><%= m_user.id %></td>
      <td><%= m_user.user_name %></td>
      <td><%= link_to "編集", {:action => "edit", :user_id => m_user.id} %></td>
      <td><%= link_to "削除", {:action => "delete", :user_id => m_user.id} %></td>
    </tr>
  <% end %>
</table>

<%= paginate(@m_users) %>

```

### おまけ？　日本語化

 `config/locales/ja.yml`を作成して、以下のように設定しました。

 ```lang:config/locales/ja.yml

ja:
  views:
    pagination:
      first: "&laquo;"
      last: "&raquo;"
      previous: "&lsaquo;"
      next: "&rsaquo;"
      truncate: "..."
  helpers:
    page_entries_info:
      one_page:
        zero: "<string>該当データがありません</string>"
        one: "<string> - 1/1 - </string>"
        display_entries: "<string> - %{entry_name}/%{count} - </string>"
      more_pages:
        display_entries: "<string> - %{entry_name}/%{count} - </string>"

 ```

lang:config/application.rbに‘config.i18n.default_locale = :ja‘と設定する。

```lang:config/application.rb

 9| module RorProject
10|   class Application < Rails::Application
11|     config.i18n.default_locale = :ja
12|     # config.i18n.load_path = Dir[Rails.root.join('config', 'locales', '').to_s]

```

自分の環境では

```
« ‹ 1 2 3 › »
```
という形で表示されるようになりました^^

# ■ Bootstrapを扱うためのGem
 **※はじめに言っておきます。私はまだ成功してません。**
使用(したかった)Gem：[Twitter Bootstrap](https://github.com/seyhunak/twitter-bootstrap-rails)
一度お世話になったことのあるBootstrapさん。デザインをあまり考えなくていいなと思い、
Gemを入れようとしましたが。。。。

```
gem "therubyracer"
gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS
gem "twitter-bootstrap-rails"
```
この３行をGemfileに追記して・・・？
`therubyracer`はもともとGemfileに記載がありましたがコメントアウトされていました。
まあ、そのまま追記して`bundle install`したわけですが、『`therubyracer`がインストールされてない！？』
追記した`gem "therubyracer"`の方をコメントアウトして、もともと記載されていた
`# gem 'therubyracer', platforms: :ruby`のコメントアウトを外して`bundle install`してもダメ。
[ここのサイト](http://inoao.hatenablog.com/entry/2014/03/27/183523)様によると、therubyracer と libv8というGemを正しくいれておかないといけないようですた。[ここのページ](http://stackoverflow.com/questions/16514758/gem-install-libv8-version-3-11-8-17-on-ruby-windows)を参考に下記の用にコマンドでインストール
`gem install libv8 -v '3.11.8.17' -- --with-system-v8`
libv8はうまくインストールできました。

`therubyracer`は[こちらのサイト様](http://shoprev.hatenablog.com/entry/2012/11/03/132027)によるとWindowsはサポートして無いだとか。
同じサイト様に記載されている方法で試してみました。

[windows用のGem](https://github.com/downloads/stereobooster/therubyracer/therubyracer-0.11.0beta1-x86-mingw32.gem)をダウンロード

ダウンロードしたファイルをアンパック
`gem unpack XXXXXXXXXXXXXXXX`

Gemfileに下記の記述を追加して、bundle install
`gem 'therubyracer', :path => 'therubyracer-0.11.0beta1-x86-mingw32'`

インストールできた！！
あちこち解決を探し回ってやっと・・・これで使えるのかな！！

が、サーバーが起動しなくなりました。orz
もう私のライフは０です。(訳：後で頑張ります)


--　ある程度追加していく予定です。　--