[Rails][JQuery]いつも忘れるDynamic select options

結構な頻度で書く依存型セレクトボックス。毎回自力で書いてるような気がするのでログしておく。

ruby/railsでEBS volumeを作る方法

AWS version3でebs volumeを作るのはドキュメント通り。

RubyでAWS Route53にレコードを追加/削除する方法

Aws ruby version3 での話です。CLIはjsonを作らないといけなそうですが、rubyだとそこが必要ないので楽。UPSERTはドキュメントによると無ければCREATE、あればUPDATEとのこと。
またactionにDELETEを指定することでレコードを削除できる。

[Rails] Action Cableの実装方法

JQueryは古いテクノロジーとはいえ、さくっと動くものを作るときは異常に簡単です。
古いテクノロジーは悪ではなく適材適所で使っていくのが大事だと思っています。

まずは、最初からあるapp/assets/javascripts/cable.jsを該当layoutで読み込みます。

全部のViewでApp.cableを呼ぶ必要はないのでcontent_forでActionCableとの通信をとるViewだけJSを走らせるようにします。

JSでは、App.cableにイベントを登録していきます。 引数のchannelにはクラス名、引数を渡すとparamsに入ってサーバ側で処理できます。this.performを使ってクラス内のメソッドを呼ぶことができます。development環境では別プロセスで動作確認ができないのでsetTimeoutを用いてテストしています。

HTML部分は下記のような感じ。

で最後になりますが、ActionCableを継承したクラスです。subscribedがconnectionとともに走ります。 stream_for MODELでモデルに関係したチャネルが接続されます。 そして、broadcast_to(MODEL, object)でそのモデルへの接続を確率したチャネルにプッシュすることができます。

これでダイナミックにDOMを操作できるようになりました。

[Rails] Device利用時のconnection.rb(Action Cable)

Railsガイドで説明されているconnection.rbはcookieを利用しているもので、deviseを利用する場合は、request.envに設定されているwardenのものを取ってくる必要がある。 もしくはsessionの中を漁る感じ、request.envの方が綺麗に書けるのでこちらを採用した。 (Essentially, the both are cookie tho..)

参考: https://stackoverflow.com/questions/38470463/rails-devise-action-cable

AWS Ruby SDKでCost Exploreの情報を取得する方法

aws-sdk version3での話です。

1. aws-sdkのCost Exploreのモジュールを読み込む

2. IAMユーザに請求情報のアクセス権を与える

上部のナビバーのアカウントをクリックして、請求情報のアクセスのeditをクリックしてIAMアクセスのアクティブ化をチェックして保存。

3. IAMユーザに必要なロールを設定して追加する

下記のロールを作成し(今回はGEtCostAndUsageのみ)、該当ユーザでロールを追加する

4. REPLでテスト

Rails cでコンソールを呼び出しテスト。各キーは設定済みとする。

初期化。us-east-1でのみ提供されている

BlendedCostとUnblendedCostの差がわかりづらい。Unblendedの方が割引などを除いた実際の数値に近いという理解で良いのか。

ドキュメントを読み試行錯誤の結果、タグに紐づいたコストを引くことができた。

注意

Cost ExploreのAPIリクエストにはお金がかかりそう。。

vim-session プラグインを使ってtabごとsessionを保存する方法

tmuxで指定したwindow/paneから始める方法 [再起動も安心]を説明したが、Vimのセッション情報もタブを含めてRestoreしたい。 最初は全て自動で保存しようとしたが、必要に応じて自分でセッションを保存した方が実用的。ブラウザのタブのように、使わないタブが残ってしまい必要のないタブが溜まっていってしまう。

vimはデフォルトでセッションの管理が可能だが、細かいところまで残すにはvim-sessionを使った方が良い。

.vimrc

SaveSessionとタイプするのが面倒なのでノーマルモードで\ssでSaveSessionを呼び出す。

例えば、セッションをProject毎に保存する場合は、引数のセッション名にプロジェクト名を指定することでプロジェクトごとのセッションの作成が可能。

.vim/sessions/<session name>.vimに保存されるのでこれをvimの引数として呼び出せばよい。

実際は、tmuxの起動スクリプトに書いておけば良い。

[Cloud IDE] Codenvy ファーストインプレッション

redhatが買収したCodenvyです。Eclipse Cheを利用したIDEでEcliseユーザに馴染み深いものになっているのではないでしょうか。

一言でまとめるなら、”2018年だったらCodenvy使うよね”という感じです。程よくインフラが抽象化されていて開発環境を提供するという目的に則していると思います。

スクショで見ていきます。

Socialボタンによるサインアップ・ログインを完備

Email/passだけではなく、githubログインなどがあるのは良いですね。

今回はgithubログインを選択。ユーザデータ、sshキー、レポジトリへのアクセスが取られます。githubを利用した開発フローならば後で必要になると思うので許可します。

プロフィールを設定してサインアップ終了

3GのRAMが無料で使える!

太っ腹ですね。

Workspace毎にVMが立ち上がる

Cloud9などのサービスだと開発するサーバを意識して作らないといけませんが、workspaceという名前になっていてサーバ側を意識しない環境になっています。

ワークスペースの設置でどの開発環境で行うか選べる。

Herokuみたいに環境をぽちぽち選べる。これはすごい。Railsもありました。

選べるstack。

Dockerによる開発環境提供

作成するとdockerのイメージが立ち上がる。30秒ぐらいで立ち上がります。

開発環境はUbuntu

4Gストレージ付き

10分使用しないと停止設定

おそらくこれが課金ポイントでしょう。10分なんてロジックを考えてたり、同僚とdiscussionしてたら過ぎてしまいますしね。それ毎に30秒待つの苦しい。

Projectを作って開始

残念なのはRailsのプロジェクトがない。。Eclipse開発系多めという印象でしょうか。

まとめ

  • クレジットカードを入れることなく始められる
  • 3GRAMまで無料で利用できる(2018年8月時点)
  • 環境設定を一からやる必要のないStackという概念
  • インフラ(サーバー)を意識しない設計
  • Eclipse好きな人には良さそう

[Cloud IDE] Koding ファーストインプレッション

Koding – Modern Dev Environment Delivered

Cloud9との比較で引用されるKodingです。彼らのポジションとしてはCloud IDEでないと言っていますが、ユーザの主はそれで流入しているのではないでしょうか。

Koding is not an Online IDE. … Koding provisions development environments, makes them accessible locally.

from koding blog

“チーム開発を主体とした開発環境を提供する”ことを目標にしている。スタックを自分で作るなど、面倒な部分があります。

スクショで見ていきましょう。

ユーザ登録にクレジットカードが必要

このステップはAWSを使うときにも必要ですが、Amazonほど大きくない会社にいきなりクレジットカードを預けるのは少し心配な気がします。あまり、中身を見ないでdeveloper soloを選択しました。(これが原因かあとでチームで新しいアカウントを作成してもスタックを選ばないと進めない状況になりました。。)

emailとチーム名を入力

ユーザ・パスワードを入力

クレジットカード情報を入力

チームのサブドメインを作成

Stack(接続するサーバー)を作る必要がある

Dveloper soloを選択したのが理由かわかりませんが(あとでチームも作成しましたが同じでした),スタックを選ぶところから始まります。 AWS, Vagrant, Google Cloud Platform, Digital Ocean, Azure, Marathon, softlayerが2018年8月時点で選べるようです。つまり、開発者が開発するサーバを決めなければなりません。

AWSのAPIキーを入力し、Credentialを作成

AWSのstackを利用するにはAPIキーが必要

AWSを触ったかとがある人ならIAMでユーザを作って始めればいいとわかりますが、初心者には大変かもしれません。

stackを作成

Ace Editorを利用したコーディング

Cloud9と同じAce Editorのエディタを利用しているようです。 設定はCloud9の方が細かく設定できそうです。

まとめ

  • UIがCool&可愛いので好感がもてる
  • クレジットカードを最初に入れるのはハードルが高い
  • 一人で開発するにはあまり利点がなさそう。逆にチームでの機能が充実している?(試してません)
  • Stack(Server)は自分で設定するのである程度インフラの知識が必要
  • 一人でAWSをStackに使うならCloud9の方が良さそう
Scroll to top