サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
コーヒー沼
qiita.com/nysalor
しばらく書いてなかったけどメモ程度に dreddとは dreddはopenapi(swagger)やAPI Blueprintの定義を読み込んでテストを実行してくれる便利なツールです。 例えば localhost:8080 でAPIサーバを動かして のようにすればschema.yamlに定義されたAPIの定義に従ってリクエストを送り、レスポンスが仕様に従っているかテストしてくれます。 が、ログインしてtokenを貰ってそのtokenでアクセスするというようなAPIはそのままではテストできません。 hooksという仕組みを使うと、レスポンスからtokenを取得して以後はそれを使う、といった動作が可能になります。 dredd hooks ドキュメントにある通り、hooksは様々な言語で書くことができますが、とりあえずdreddと同じnode.jsでやってみます。 (なぜかと言うと、docker
ECS with awsvpc on EC2 10年ぶりくらいに書くので口調を忘れました。昔の記事と違ってたらすいません。 TL;DR ENI上限を引き上げるには デフォルトのawsvpcTrunkingをenabledにすれば良い EC2 vs Fargate ECSはVPCネットワーキング(awsvpc)で使う方が楽で、かつVPCを使う場合はFargateを使う方が楽です。 ただ、敢えて苦難の道を選びEC2コンテナインスタンスを使うメリットももちろんあります。 EC2のメリット Fargateより安い Fargateが値下げされたので今は変わらないかも。 ログドライバにawslogs以外を選べる Fargateだとawslogsしか(splunkも選べるようになったけど)選べません。 特にデバッグの時にcloudwatchを見るのはとてもつらいので、jsonfileやfluentdを使
codedeployを使っている場合、ソースコードのキャッシュが /opt/codedeploy-agent/deployment-root/[デプロイグループID]/ というディレクトリに溜まっていきます。 このディレクトリは5世代まで?保持されますが、インスタンスのディスク容量を圧迫するので、やむを得ず消さなければならない場合があります。 しかし、無闇に削除すると次回以降のデプロイが以下のようなエラーで失敗するようになります。 No such file or directory - /opt/codedeploy-agent/deployment-root/[デプロイグループID]/[デプロイID]/deployment-archive/appspec.yml これは、codedeploy-agentが直前のリビジョン(デプロイID)を探すためですが、前回のデプロイ情報は /opt/c
プロダクトが大きくなるにつれて、既存のコードの一部を使いまわしたいというケースはよくあるでしょう。 OSSとして公開してしまうのが一番なのですが、様々な事情から公開できないこともあると思います。 そんな場合に、同じコードを複数のリポジトリにコピーするのは当然良くありません。 git submodule等を使う手はありますが、rubyの場合はrubygemsのエコシステムを使ってプライベートなgemを作成し、組み込むことができます。 gemの雛形を作る gemを作成したことがない人も多いと思いますが、驚くほど簡単です。 とりあえずbundlerがインストールされているとして(普通はしていると思いますが) Creating gem 'my_rubygem'... create my_rubygem/Gemfile create my_rubygem/.gitignore create my_r
railsでページごとにtitleタグの中身を変えたい場合などに、毎回インスタンス変数に設定したりcontent_forをviewに埋め込んだりすることがありますが、それを簡単に書けるのがmeta_tagsです。 しかし、ちょっとインターフェイスが直感的でないところがあるので簡単に使い方をメモします。 共通のtitleやmeta tagを埋め込む
よく忘れるのでメモ。 通常はリレーションで解決するのであまり使いませんが、Rails(ActiveRecord)で SELECT COUNT(DISTINCT some_id) FROM users のようなSQLを実装する方法です。 少し古い情報には
発端 ある日突然、rspec-modeのテスト実行が失敗するようになった。 ログによるとシステムのrubyを使おうとしており、rbenvが無視されている。 rbenv.elはもちろん使っているし、exec-pathに~/.rbenv/shimsを入れるようにしてもダメ。exec-path-from-shellも使ってみたけどダメ。 犯人はpath_helper 弱り果ててrpsec-modeに直接デバッグコードを埋めて調べてみると、PATHの先頭に/usr/bin,/binなどが入っていて、rbenvのrubyよりもシステムのruby(/usr/bin/ruby)が優先されていた。 もちろんrbenvのパスはrbenv.elが先頭に追加しているはずなので、原因がよく分からなかったのだが、こちらなどを見て判明。 /etc/zshenvに以下のコード
Ajaxのエンドツーエンドテストを書く際など、思うように望んだ状態を作り出せず、直接JavaScriptを実行できれば楽なのに・・・というケースがたまにあると思います。 capybaraのexecute_scriptを使えば任意のJavaScriptを実行できます。
モデルのtimestamp(created_at,updated_at)は通常、TimeWithZoneクラスのインスタンスですが、これがTimeクラスになる現象が発生しました。 Timeクラスになるとどうなるかと言うと、railsが時刻を扱う際には通常、DBにはUTCで格納し、入出力時にTimeZoneを加えるようになっていますが、これが行われないのでUTCのまま扱われ、viewにも当然UTCで出力されるようになります。 原因 せっかちな人のために結論を書くと、利用していた論理削除gemrails4_acts_as_paranoidが原因でした。 これをparanoiaに置き換えたところ解決しました。 以下、原因を調べた方法について書きます。 調査 まず、timestampがTimeWithZoneを返す正常なrailsアプリを用意し、DBを比較してみたところ、DBには差がないことが分か
railsでhas_many :throughした時に重複しないような制約をかけるために、従来は以下のようにしていました。 class Product < ActiveRecord::Base has_many :product_categories has_many :categories, through: product_categories, uniq: true end
Nexus7のOTAアップデートが失敗しまくるので、こちらの方法で手動アップデートを試みたが、xxxx has unexpected contentsなるエラーで失敗するのでファクトリーリセットを試みた。 ファクトリーイメージを入手 こちらから。 やや分かりにくいが、 Nexus7(2013) WiFi → razor Nexus7(2013) LTE → razorg Nexus7(2012) WiFi → nakasi Nexus7(2012) LTE → nakasig をそれぞれ探す。どのバージョンを使うかは下記参照。 どれが必要になるか分からず、またファイルサイズが大きく時間がかかるため、寝ている間に全部落としておいた。 USBデバッグを有効にする 1.設定→タブレット情報→でビルド番号を7回タップしてデベロッパモードへ。 2.設定に戻ると開発者向けオプションが有効になっているの
ノートPCとデスクトップなど、複数のPCで開発する際に、中途半端な状態のままPCだけ移動したいと思うことはありませんか? 終電が迫っていて持ち帰りたいとか、バグを他の人にちょっと見て欲しい時とかありますよね。いちいちコミットを作成してもいいですが、ちゃんと動作しないものをコミットに含めるのには抵抗がありますし、後で正式なコミットに切り分けるのも面倒です。 ずっと悩んでいましたが、こちらを見て意外に簡単な方法で実現できることに気づきました。 まず、元のPCでgit diff > /path/to/current.diffでHEADとの差分を取り、差分ファイルを別のPCにコピーします。 そして別のPC(リポジトリ)でHEADをpullしてから、git apply /path/to/current.diffで同じ状態になります。 diffの保存先をDropboxなどにすれば手間はほとんどかかりま
~/.netrcにIDとパスワード書けばいいよ!と言う人もいるけど平文でパスワード書くなんて恐ろしい真似はしたくないよね。 まず、なぜパスワードを求められるかと言うと、http(s)でcloneしたからと思われる。新しいリポジトリを作った時、例としてhttpsでcloneするコマンドが出てくるのでついやっちゃってるケースがありそう。 リモートのURLを確認・変更 リポジトリのディレクトリに入って
sidekiqはresqueやdelayed_jobのような非同期実行を実現するgemです。 使い方はgithubのwikiかRAILSCASTSあたりを見れば分かりますが、Railsで使う場合について簡単に要約してみます。 準備 バックエンドにredisが必要です。 とりあえず試すのであれば、Macならbrew install redisでインストールされます。 本番ではwebサーバと別にredisサーバを用意するべきでしょう。 インストール 通常通りGemfileに書いてbundle installするだけです。
色々なgemが依存しているnokogiriですが、homebrewからlibiconvが削除されたためビルドに失敗することがあります。 チュートリアルではlibiconvを別途インストールするのが推奨されており、こちらでも解決可能ですが、個人的にあまりsudoしたくないのでhomebrewで解決してみます。 以下の手順でビルド可能です。
最近カメラに凝っていますが、ストレージが安くなったこともあり、つい大量に撮影してしまって整理が大変です。 デジカメの写真にはEXIFというフォーマットで撮影情報が含まれているのはよく知られています。exifrはそれをrubyから扱うことのできるライブラリです。 まずgem install exifrでインストールします。 そして以下のようなコードで画像(jpgまたはtiff)からEXIF情報を取り出します。 @exif = EXIFR::JPEG.new('/path/to/file.jpg') # カメラのモデル名 puts @exif.model # => "NIKON D7000" # シャッタースピード。Rationalで返る puts @exif.exposure_time.to_s # => "1/640" # F値。Rationalで返る puts @exif.f_numbe
deviseを使って認証しているコントローラのテストを書くには、wikiに書いてある通り以下のようにすれば良い。 spec/supportにcontroller_macros.rbを追加 module ControllerMacros def login_user before(:each) do @request.env["devise.mapping"] = Devise.mappings[:user] sign_in FactoryGirl.create(:user) end end end
class AddDefaultAgeToUser < ActiveRecord::Migration def change change_column :users, :age, :integer, :default => 30 end end
% openssl req -new -newkey rsa:2048 -nodes -keyout mydomain.key -out mydomain.csr 2.mydomain.csrを業者に送って証明書を発行してもらう 大抵2、3日かかる。 3.中間証明書をダウンロードする bundle.crtとかそんな感じの名前が多い。 4.発行された証明書(mydomain.crt)と中間証明書を連結する と言っても繋げるだけ。
Railsアプリで検索機能を実装するケースは非常に多いと思います。 簡単な検索であればwhereとLIKEを使って書けますし、やや複雑なものもeverywhereが便利ですが、ここではもっと複雑な条件の組み合わせを実装する時に便利なransackを紹介します。 基本 searchメソッドで条件を指定し、resultメソッドで結果を返します。 resutはActiveRecord::Relationを返すので、SQLは普通のActiveRecord同様遅延評価されますし、さらにwhereを繋げたり、kaminariでページングしたりすることもできます。また、to_sqlで発行されるSQLを確認することもできます。 もう少し詳しく書くと、searchはModelまたはActiveRecord::RelationをレシーバにしてRansack:Searchを返し、Ransack:search#r
Rails Advent Calendar 11 日目です。 Railsの定番paginatorと言えばkaminariです。Railsで開発をしたことがあれば、少なくとも名前くらいは聞いたことがあるでしょう。 大変使いやすく、ほぼゼロコンフィグでページネーションできますが、ドキュメントがシンプルなこともあって、ちょっと凝ったことをしようとすると情報を探すのに苦労します。 と言うわけで「kaminariを使って三日目」くらいの人向けに書いてみます。 Why kaminari? まずは基本的なところをおさらいします。 ActiveRecordオブジェクトをkaminariでpaginateするには、以下のようなコードを書きます。(Gemfileは設定済みとします)
Delorean.back_to_the Time.zone.local(2012, 7, 18) do テストを書いている時に、境界値分析で特定の時刻をテストしたいということがよくあります。日をまたぐ場合とか、経過時間であれこれするとか、ゲームなんかだとよくありますね。 そういう時にテストケースを書く助けになるのがDeloreanです。
rb-skypemacをインストール gem installで入るのは古いので https://github.com/r7kamura/rb-skypemac こちらをcloneして % gem build rb-skypemac.gemspec % gem install rb-skypemac-0.3.2.gem でインストール とりあえず試す http://d.hatena.ne.jp/koseki2/20090405/skypesh こちらのskypeshをそのまま使ってみた ステータス取得 GET USERSTATUS 退席中にする SET USERSTATUS AWAY 入っているチャットのリストを取得 SEARCH RECENT CHATS 最近のチャットメッセージIDを取得 GET CHAT #chat_owner/$chat_member;xxxxxxxxxxxxxxx
このページを最初にブックマークしてみませんか?
『qiita.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く