Rails4

14094488767_42c93bf957

photo credit: Hauptbahnhof, Central Train Station, Hamburg – Train Lines via photopin (license)

こんにちは!

長い文字を切り取って「…」を付けたくなるとき、いっぱいありますよね! 今回はRailsでそれをやる方法を紹介します!

truncateメソッドを使おう

ActiveSupportでStringクラスにtruncateメソッドが追加されています。 ここで注意してほしいのは、”たーんけーと”じゃなく、”とらんけーと”だということ。 10分くらい、なんで動かないんだろう????(゜∀゜)ってなったのは僕だけですか?

separatorを指定するとキリのいい所で文章を切ってくれる omissionを指定すると「…」以外を文章の後ろに追加することが出来る

"This is a test case.".truncate(10)
# => "This is a ..."
"This is a test case.".truncate(10, separate: ' ')
# => "This is a ..."
"This is a test case.".truncate(10, omission: '...continued')
# => "This is a ...continued"

これで完璧! 最近はCSS3のtext-overflowプロパティでも実装出来るけど、どうなんだろう。 CanIUseを見る限りは97%以上は使えるぽいからそろそろCSSで実装してもいいのかな。

またhelperとしても提供されているので以下のようにしてもOK

# defaultだと30文字で切り取られる

# => "This is a test case...."

# 文字数の指定をする場合

# => "This is a ..."

# separator指定

# => "This is a test case...."

# omission指定

# => "This is a ...continued"

最後に

Rails楽しい!!

参考

API RubyOnRails Document – truncateActiveSupoprt API RubyOnRails Document – truncate

Read more

5807852400_6cb1047a04

photo credit: Gerbera via photopin (license)

みなさんこんにちは! 最近はRails4に夢中の@DAI199です。

今日はRailsを運用する中で、どんどん大きくなるログファイルってどうしたらいいんだろう?と思って調べたので記事書きます!

今回の環境は

  • Rails4.2

で動作確認しています。

こういう問題の解決策

どんどん大きくなるログファイル。圧迫される容量。 初期の無用なデータ。 これらをある程度消去していったりして管理したいですよね。

これを解決するために、「ログローテーション」という方法で解決することが出来ます。 もちろんフルスタックのRailsなので、ログローテーションを設定することが出来ます!

Railsで設定する方法

それではログローテーションを設定しましょう。

内容はとても簡単で、もしproduction環境において反映させたい場合は

#{Rails.root}/config/environments/production.rb

config.logger = Logger.new("log/production.log", 5, 10 * 1024 * 1024)

上記のように設定すると、10MBのログファイルが出来たら、production.log.0、production.log.1のように5つまでファイルを作成してくれる模様。 5ファイルを超えたら勝手に削除してくれます。便利!!

容量じゃなくて日程別に分けたい!

というときは下記のように設定しましょう。

#{Rails.root}/config/environments/production.rb

config.logger = Logger.new("log/production.log", 'daily')
config.logger = Logger.new("log/production.log", 'weekly')
config.logger = Logger.new("log/production.log", 'monthly')

こうやって設定するとproduction.log.20150803 のようにわけて保存してくれます!これまた便利!

最後に

実際に運用し始めると予想外の所で詰まったりして色々大変ですが、だからこそ楽しかったりしますよねw これからもRailsさんお世話になりますー((´^ω^))

参考記事

Read more

こんにちは!

RailsAdminで色々カスタマイズしようとしたり、jsのライブラリを読み込もうとしたときになぜか動かない・・・ 公式を見る限り、

・app/assets/stylesheets/rails_admin/custom/theming.scss ・app/assets/stylesheets/rails_admin/custom/variables.scss ・app/assets/stylesheets/rails_admin/custom/mixins.scss ・app/assets/javascripts/rails_admin/custom/ui.js

にファイルを置いて、それぞれに対して書いていけば、動くって書いてあるのに動かない・・・

また、ui.jsはmanifest fileとして動くはずなのに動かない・・・なんで・・・

と思って色々検索してたら、ここのページに解決法がのってました。

以下のコマンドを実行!

$ be rake tmp:clear

サーバーも一応再起動してアクセスすると・・・動くーー!manifestとしてもちゃんと動くーー!

てことで解決しました!わーいヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ

色々役に立ちそうなことがたくさん書いてあるので必携かも

パーフェクト Ruby on Rails
すがわら まさのり 前島 真一 近藤 宇智朗 橋立 友宏
技術評論社
売り上げランキング: 31,159
Read more

最近はRubyOnRailsをごりごりいじって色々やってます。 その中でrails_admin gemを導入する機会があったのですが、結構つまづいてしまったので記録として残しておこうと思います。

Rails – 4.1.0 Ruby – 2.1.0 rails_admin – 0.6.2 devise – 3.2.4

まずはGemfileに以下を追記します。

gem 'rails_admin'
gem 'devise'

rails_adminでは管理者ログインとしてDevise gemを使うことが出来ます。 その他にもSorceryやManuallyというgemも使えるようですが、自分はDevise gemしか使ったことないのでDeviseにします。

そしてインストールしてdeviseをインストールします。

$ bundle install
$ bundle exec rails g devise:install

色々出てきますが、フラッシュメッセージの部分だけ修正します。

app/views/layouts/application.html.erb



  Cafe
   true %>
   true %>
  


追記した部分を色でつけておきました。

次はmodelを作ります。admin_user というmodelでも作りますか

$ rails g devise admin_user

管理者は直接DBにデータを入れたいため、:registerableと:recoverableを消しておきます。

app/models/admin_user.rb

class AdminUser 

generateしたときに生成されたマイグレーションファイルの中からもregisterableとrecoverableは外しておきます。

db/migrate/****_devise_create_admin_users.rb

class DeviseCreateAdminUsers 

ここまで出来たらマイグレーションしておきましょう。

$ bundle exec rake db:migrate

次はようやくrails_adminをがちゃがちゃします。インストールしましょう。そのときにどのパスで入れるようにするか聞かれるので今回は /admin_user でやってみたいと思います。

$ rails g rails_admin:install
           ?  Where do you want to mount rails_admin? Press 
 for [admin] > admin_user

でここからdeviseと連携させます。色々な記事では自動的に連携されてるっぽいのですが、僕の場合はそうはいかなかったので手動でやります。

config/initializers/rails_admin.rb

RailsAdmin.config do |config|

  ### Popular gems integration

  ## == Devise ==
  config.authenticate_with do
    warden.authenticate! scope: :admin_user
  end
  config.current_user_method(&:current_admin_user)

  ## == Cancan ==
  # config.authorize_with :cancan

  ## == PaperTrail ==
  # config.audit_with :paper_trail, 'User', 'PaperTrail::Version' # PaperTrail >= 3.0.0

  ### More at https://github.com/sferik/rails_admin/wiki/Base-configuration

  config.actions do
    dashboard                     # mandatory
    index                         # mandatory
    new
    export
    bulk_delete
    show
    edit
    delete
    show_in_app

    ## With an audit adapter, you can add:
    # history_index
    # history_show
  end
end

ここで大切なのは今回、admin_userとして使用するため、シンボルを :admin_user に変更、9行目の部分も current_admin_user に変更しました。まだこういうとこ慣れてないって感じます・・・

んで次はrouteをちょっといじります。デフォルトの状態ではコンフリクトしてしまうので順番を上下逆にします。 4行目と5行目を逆にして devise_for が上にくるようにしましょう。

Rails.application.routes.draw do
  root 'home#index'

  devise_for :admin_user
  mount RailsAdmin::Engine => '/admin_user', as: 'rails_admin'

少し長かったですが、これで終わりです!あとはコンソールでユーザー作って実際にログインしてみましょう!

これで localhost:3000/admin_user にアクセス出来るのでアクセスしましょう!うまくいってればログイン画面に飛ばされ、ログインすると綺麗な画面が出てくるはずです!!

色々高機能らしいrails_admin、これから色々触ってみます!!

頑張って読んでます。面白い!

メタプログラミングRuby
Paolo Perrotta
アスキー・メディアワークス
売り上げランキング: 26,917
Read more