Rails4で長い文字列を切り取って「…」(ドット)を付け加える

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

こんにちは!

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

“Rails4で長い文字列を切り取って「…」(ドット)を付け加える” の続きを読む

Rails4で大きくなるログファイルに対応する

5807852400_6cb1047a04
photo credit: Gerbera via photopin (license)

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

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

今回の環境は

  • Rails4.2

で動作確認しています。

“Rails4で大きくなるログファイルに対応する” の続きを読む

rbenv入れるならanyenvで入れると便利!

みなさんこんにちは!

最近Rubyのバージョン管理システムであるrbenvをインストールすることが多いんですが、もっと簡単に楽にインストール出来ないかなぁと思ってたら、遅ればせながら、anyenvというものがあるようです。

anyenv

これを使えばrbenvはもちろんのこと、phpやperl, python, nodejs等多くのバージョン管理システムを簡単に入れることが出来ます。

それではインストールしてみましょう。

“rbenv入れるならanyenvで入れると便利!” の続きを読む

RailsAdminでなぜかカスタマイズしたCSS/JSが読み込めないときの対処法

こんにちは!

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
Ruby on Rails 4 アプリケーションプログラミング
山田 祥寛
技術評論社
売り上げランキング: 32,262

Rails4にrails_adminを導入して綺麗な管理画面が出来るまで

最近は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

<!DOCTYPE html>
<html>
<head>
  <title>Cafe</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body>
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>

<%= yield %>


</body>
</html>

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

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

$ rails g devise admin_user

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

app/models/admin_user.rb

class AdminUser < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable,
         # :registerable, :recoverable,
         :rememberable, :trackable, :validatable
end

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

db/migrate/****_devise_create_admin_users.rb

class DeviseCreateAdminUsers < ActiveRecord::Migration
  def change
    create_table(:admin_users) do |t|
      ## Database authenticatable
      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""

      ## Recoverable
      # t.string   :reset_password_token
      # t.datetime :reset_password_sent_at

      ## Rememberable
      t.datetime :remember_created_at

      ## Trackable
      t.integer  :sign_in_count, default: 0, null: false
      t.datetime :current_sign_in_at
      t.datetime :last_sign_in_at
      t.string   :current_sign_in_ip
      t.string   :last_sign_in_ip

      ## Confirmable
      # t.string   :confirmation_token
      # t.datetime :confirmed_at
      # t.datetime :confirmation_sent_at
      # t.string   :unconfirmed_email # Only if using reconfirmable

      ## Lockable
      # t.integer  :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
      # t.string   :unlock_token # Only if unlock strategy is :email or :both
      # t.datetime :locked_at

      t.timestamps
    end

    add_index :admin_users, :email,                unique: true
    # add_index :admin_users, :reset_password_token, unique: true
    # add_index :admin_users, :confirmation_token,   unique: true
    # add_index :admin_users, :unlock_token,         unique: true
  end
end

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

$ 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

Rubyで文字列が空じゃなかった場合の条件分岐

こんにちは!

Rubyで色々遊んでるんですが、本当に大したことじゃないところで?ってなることが多いです。
まぁ最初はそんなもんだと思うのですが、ちょっとずつメモしていこうかと。

よくあるのが、変数内の文字列が空じゃなかったら、みたいな条件分岐。
これPHP脳だと!empty($name)みたいにしちゃうのですが、なんか違うなぁと。

なので軽く調べてみるとRubyにはunlessというifの逆があると。

じゃぁこれ使って以下のように条件分岐すればいいじゃん、みたいな。 “Rubyで文字列が空じゃなかった場合の条件分岐” の続きを読む

Ruby製のテンプレートエンジン『Slim』に今更ながら入門してみたのでメモする

こんにちは!

最近隣のエンジニアやいつかどこかの記事でSlimやばい的なことを聞いた気がするのでじゃぁやるか!って完全にノリで今回Slimに入門してみます。

そもそもSlimとは??

Ruby製のテンプレートエンジン。
軽くて速く、また習得するのも容易。

Slimをやるときにとりあえず覚えておくといいのは

  • 拡張子は.slim
  • インデントの深さで入れ子構造を表現する
  • 通常のHTMLから< , >, />を取り除くと基本OK

それでは実際のコードを見てみましょう。 “Ruby製のテンプレートエンジン『Slim』に今更ながら入門してみたのでメモする” の続きを読む

Ruby単体でActiveRecordを使ってみる

こんにちは!

最近ちょこちょこRubyで遊びながら、Rubyという言語に慣れていってる途中です。

今回はRailsでお馴染みのActiveRecordをRails内じゃなくてRuby単体のプログラム内で使ってみようと思います。
やっぱりCakePHPに慣れているので単体のプログラムでもActiveRecordが使えるととても助かると思います。

それではやっていきましょう。

“Ruby単体でActiveRecordを使ってみる” の続きを読む

RubyでGoogleDrive APIを使用するためにアクセストークンを取得する

RubyのGoogleDrive Gemを使ってGoogleDriveをさわろうとしたところ、OAuthの認証でつまづいたのでそのメモします。

OAuth2.0の流れはこんな感じです。

  1. ClientIDとClientSecretを発行する
  2. 認証する
  3. アクセストークンを取得する
  4. リフレッシュトークンからアクセストークンを再取得する
  5. GoogleDrive gemを使ってみる

“RubyでGoogleDrive APIを使用するためにアクセストークンを取得する” の続きを読む