ルニラボ

lni_T の長文置き場

WebサイトへのSNSシェア系ボタンの設置方法メモ

概要

  • Twitterはてブ等でのシェアボタンを設置するためのリンク集(2015/10/20)

詳細

Rails+AngularJSのアプリをJasmineでテストする

概要

参考資料

手順

jasmine-railsのインストール

  • ここは参考資料通り
# Gemfile
group :development, :test do
  gem 'jasmine-rails'
end
  • bundle install

  • rails g jasmine_rails:install したら一式インストール完了

    • 楽ちんすぎてばかになりそうだ

angular-mocksのインストール

  • Jasmineでテストしようとすると、angular-mocksが必要になる。
  • 入ってないとこれ以降の手順で以下のエラーが出る。
    • ReferenceError: module is not defined
  • application.jsでrequireする
    • なんらかの手段でangular-mocksのパッケージは入れておくこと
//= require angular-mocks

実際のテスト

  • 先のjasmine-railsのインストールで、テスト用のページは作られているのでSpecRunner.htmlなどは不要で、そのままテストを書けばよい。
describe "HogesController", ->
  beforeEach ->
    module('myApp')

  beforeEach ->
    inject ($controller, $rootScope, Hoge) ->
      @scope = $rootScope.$new()
      @ctrl = $controller("HogeController", { $scope: @scope })
      spyOn(Hoge, "query").and.callFake ->
        return []

  it "search()", ->
    @scope.search()
    expect(@scope.hoges).toEqual([])
  • myAppHogeサービスと、HogesControllerが定義されており、HogesControllersearch()をテストすることとする。

  • 最初のbeforeEachでmoduleを準備する。

  • 次のbeforeEachで@scopeとテスト対象のコントローラを定義する。
    • ついでにHogeサービスのquery()で返ってくる値をspyOnで代役を立てておく。これで実際に通信しにいくことはない。
    • spyOnはJasmineのSpy機能の1つ
  • itでテストを行う。
    • HogesControllersearch()が実行された後、scopeのhogesHogeサービスのquery()の戻り値が入っていることを期待する。

ひとりプログラミング合宿へ

突発的なここではないどこかへ欲

そして合宿へ

計画

リリースやインターンシップのや炎上案件が重なり、取得できていなかった夏季休暇があったので今週取得して合宿へ。

特に場所の希望はなかったのでざっくりと決めていく

  • 近場or遠出
    • →あまり遠いと移動で合宿の体力が尽きるので関東近郊で
  • 海or山
    • ここは直感で海へ

ここまでくるとある程度しぼれる

  • 千葉or神奈川
    • 神奈川は来週別の用事で行くので違う場所へ行こうということで千葉へ

というわけで千葉に行くことに…

事前調査

  • とりあえずるるぶで下調べ
    • が特に行きたい場所なし
    • というわけで適当に宿とって温泉はいってもくもくしましょう
    • るるぶトラベルで宿探して予約

決行

  • というわけで高速バスで1時間ほど揺られて木更津へ
  • 到着しての感想
    • 「田舎だ…」「駅前に人がいねえ…」「何もない…」
    • 人が居ないので落ち着いて合宿できそうです。
  • ひとまず宿のチェックインが16時なので喫茶店で時間つぶしがてら目標の記載を行う。

合宿の目標

  • という訳で目標設定

スケジュール

  • 14:00 目標設定
  • 15:00 下調べ
  • 15:45 ホテル移動
  • 16:00 ホテルチェックイン
  • 16:15 第一次もくもくタイム
  • 18:00 近場の温泉へ(大浴場付きのホテルの予約が取れなかった)&晩飯
  • 19:45 ホテル戻る
  • 20:00 第二次もくもくタイム
  • 21:30 休憩
  • 22:00 第三次もくもくタイム
  • 23:30 休憩
  • 24:00 第四次もくもくタイム(眠気が来るまで)

実施内容

  • もくもくと何か
    1. AngularJSのテストコード
      • IkaDB!のJSにテスト構築
    2. Chrome Extension作成
      • SelectをSelect2にしてくれるExtension
    3. 読書

意気込み

  • 進捗出すぞー

本当の旅の目的

Rails4でActiveAdminを使う備忘録

Railsで管理画面を作るのに使ったActiveAdminの備忘録

基本

↓に従って進める github.com

手順

導入

  • Gemfileに記載してbundle install
  gem 'activeadmin', github: 'activeadmin'
  gem 'devise'
  • rails gで各種生成
    • $ rails g active_admin:install
      • 特に何もしていしなければAdminUserというdeviseを使ってログインできるユーザーが作成される
  • 日本語化したければしておく
  • 試しにログインするとかっこいい管理画面が表示される。

モデルを操作対象に

  • 対象のモデルに対して以下のようにrails generate
    • rails g active_admin:resource ModelName
    • これで画面に表示されるが、まだ編集はできない。
    • アソシエーション系も勝手に表示される!スゴイ!
  • app/admin/model_name.rbで操作可能な属性を指定する

    • belongs_toは :hogehoge_idを指定すると操作可能になる。
  • 追記 全属性を操作可能にする

    • config/initializer/active_admin.rbに以下を追加。
ActiveAdmin::ResourceController.class_eval do
  # Allow ActiveAdmin admins to freely mass-assign when using strong_parameters
  def resource_params
    [(params[resource_request_name] || params[resource_instance_name]).try(:permit!) || {}]
  end
end

スプラトゥーン装備検索システム「IkaDB!」 リリースしました

IkaDB!

https://ikadb.herokuapp.com

概要

  • スプラトゥーンのブキ・ギアの詳細検索ができるWebアプリです。
  • いちいちWikiを漁らなくても検索クエリを入力するだけで合致するブキ・ギアを発見できます。

経緯

  • というわけでスプラトゥーン系で何か作ると健康で楽しくなれそうだったので

結果

  • 楽しかった
  • 楽しくなりすぎて寝不足で倒れて会社休みました

結論

  • 徹夜プログラミングはほどほどに

RailsアプリへのGoogle Analyticsの導入手順

導入自体はかなり簡単だったのでさっくりまとめ

手順

ラッキングID発行

タグ埋め込み

gem 'google-analytics-rails'
# config/environments/production.rb
# トラッキングIDを記載
GA.tracker = "UA-xxxxxx-x"
  • app/views/layout/application.html.hamlのhead内にタグ挿入処理を記載する。
    = analytics_init if Rails.env.production?
  • できあがったらデプロイする。

動作確認

  • ラッキング組み込み確認
    • Google Analyticsの「アナリティクス設定」の「トラッキング情報」にステータスが表示されるが、そこがステータス: トラッキングがインストールされていますになっていれば設置完了。
  • レポート確認
    • GoogleAnalyticsの「レポート」から状況が確認できる。「リアルタイム」のレポートはアクセス内容がほぼ即時反映されるので、サイトにアクセス後このレポートにアクセス結果が反映されればOK。

CentOS6.2でBitBucketのリモートリポジトリを使用する

CentOSからBitBucketのリモートリポジトリにfetchしようとして、ちょっとハマった所をメモ

基本手順

下記のURL通りに進めればできる 公式手順(和訳) http://confluence.atlassian.jp/pages/viewpage.action?pageId=35095517

ハマった所1 アクセス権がない - Permission denied (publickey).

現象

そもそも認証できない

$ ssh bitbucket.org 

を実行して上記のエラーが出る

解決方法

CentOSでは起動後にssh-addしないと鍵を使ってくれない

$ ssh-agent
$ ssh-add [秘密鍵ファイル指定]

すると鍵を使ってくれる

ssh接続後以下のメッセージが返ってくれば認証OK

logged in as ******.
You can use git or hg to connect to Bitbucket. Shell access is disabled.
Connection to bitbucket.org closed.

ハマった所2 - gitリポジトリSSH認証できない

現象

いざgit fetchやgit pushしようとした時にパスワードを求められる

解決方法

gitの設定をHTTPS -> SSHに変更する [リポジトリ]/.git/config にあるリポジトリのconfigを確認し url = https://username@bitbucket.org/username/reponame.git のようにパスがHTTPSになっていた場合 url = git@bitbucket.org:username/hellobitbucket.git とSSHアクセス用のパスに変更する

これで認証可能

その他

より初心者向けの解説 http://morizyun.github.io/blog/ssh-key-bitbucket-github/ http://sseze.hatenablog.com/entry/2013/01/03/155711