読者です 読者をやめる 読者になる 読者になる

元フリーエンジニアライフ

Ruby on Rails とか MovableType とかAWSやってるフリーランスウェブエンジニアの記録でした。現在は法人成りしてIT社長。

ruby aws sdk v2 SimpleWorkFlow(Aws::SWF::Client)メモ

swf = Aws::SWF::Client.new 失敗したExecutionを取り出す WORKFLOW_DOMAIN = 'myworkflowdomain' resp = swf.list_closed_workflow_executions( domain: WORKFLOW_DOMAIN, start_time_filter: {oldest_date: 24.hours.ago}, close_status_filter: {status: …

Amazon Linux 2015.09 に capybara-webkit gem をインストールしてRubyでブラウジングする

Installing gems capybara-webkit gem gem入れるまでがツラい。→ AmazonLinux 2015.09 に Qt5 WebKit をインストール sudo ln -s /usr/lib64/qt5/bin/qmake /usr/bin/qmake sudo gem install capybara-webkit --no-ri --no-rdoc Building native extensions.…

Ruby AWS SDK v2 でS3の署名付きURLを発行する

Aws::S3::Presignerを使います。 基本 s3 = Aws::S3::Client.new signer = Aws::S3::Presigner.new(client: s3) signer.presigned_url(:get_object, bucket: 'your-bucket', key: 'path/to/object') URLの有効期限を設定する たとえば、購入者に向けてダウン…

クラスの属性は、クラスの特異クラスでattr_xxxxx

やりたいこと クラスごとに値をもたせたい サブクラスやスーパークラスに共有したくない こういうとき、クラスのインスタンス変数を使うわけですが、attr_accessorみたいにクラスマクロ的なの使ってわかりやすくしたいです。 答え クラスの特異クラスでattr_…

Amazon SNS + SQS な構成をAWS Ruby SDK V2で自動化する

Amazon SQSへのキューイングの際、直接SQSを使っても良いですが、SNSを使うと抽象度が高くなり捗ることもあります。 CloudWatchを使ってログを残すこともできますし、便利です。 http://dev.classmethod.jp/cloud/aws/sns-topic-should-be-placed-behind-sqs…

Aws::S3::Clientでリージョンをまたぐコピーをするときは、コピー先のリージョンを明示してやる。

たとえばダウンロード販売のコンテンツを置く場合など 長期間ホストするファイルの容量が大きい 頻繁なリージョン間転送(EC2など)は発生せず、インターネットへの転送がメイン そこまでダウンロード速度を要求しない こんなとき、S3バケットを価格の安いリ…

Amazon Cognito Identity でFacebookやTwitterログインの名寄せをしてみた

この記事はQiitaに書いた奴のコピーです。 AWS SDK for Ruby V2のCognitoIdentity::Clientクラスを使ってみました。 サンプルコード logins = { 'graph.facebook.com' => 'facebook_oauth2_access_token', 'api.twitter.com' => ['twitter_user_token', 'twi…

CarrierWave + TinyPNG によるお手軽画像最適化gem

CarrierWaveにTinyPNG APIによる画像最適化Processorを追加するgemを作りました。

S3 あるディレクトリ(プレフィクス)のオブジェクトを一括削除(AWS SDK for Ruby)

railsのaws-sdk gemを使ってs3のフォルダ(folder)を削除する 上記記事の方法はSDK v1のものなので。 削除対象のkeyのリスト作成回りとが非常にダサいですが、取り急ぎこんな感じでしょうか。 s3 = Aws::S3::Client.new pager = s3.list_objects(bucket: buck…

Elastic Transcoder ジョブをキャンセルする(AWS SDK for Ruby)

Elastic Transcoder ジョブをキャンセルする http://docs.aws.amazon.com/ja_jp/elastictranscoder/latest/developerguide/canceling-a-job.html ステータスがまだ [Submitted] になっているジョブをキャンセルできます。このステータスは、Elastic Transcod…

aws-flow-ruby でheartbeartを使ってタスクの進捗率を把握したり死活監視できるようにしておく

Amazon Simple Workflow Service (SWF) from Amazon Web Services Japan 実⾏行行時間の長いアクティビティのサポート ・定期的なハートビートの実⾏ というわけでその方法を調べたのでメモ。 default_task_heartbeat_timeout Activityクラスでハートビート…

AWS::SimpleWorkflow::Errors::ValidationException 1 validation error detected: Value '' at 'decisions.1.member.scheduleActivityTaskDecisionAttributes.activityType.version' failed to satisfy constraint: Member must have length greater than or equal to 1

[AWS SimpleWorkflow 400 0.470025 0 retries] respond_decision_task_completed(:decisions=>[{:decision_type=>"ScheduleActivityTask",:schedule_activity_task_decision_attributes=>{:activity_id=>"Activity7",:activity_type=>{:name=>"EncodeActivit…

aws-flow-ruby で失敗したタスクを失敗の種類に応じて繰り返す

SWFでタスクが実行できなかった場合はリトライ、エラーならそこで終了など、コントロールしたい。

Rails + Grape + Rspec でサブドメイン(constraints)のテストを行う時は integration_session.host= を使う

問題 Rails.application.routes.draw do constraints subdomain: /^api/ do mount Api::HogeApi => '/hoge' mount Api::FugaApi => '/fuga' end constraints subdomain: /^(?!api)/ do # non API routes end こんな感じのとき、Grapeのドキュメントにあるよ…

gemspecの依存先にGitHubのプライベートリポジトリを指定する

公開したくない(できない)gem同士の依存関係の処理方法についてメモ。 hoge_gem/hoge_gem.gemspec spec.add_runtime_dependency 'private_gem' hoge_gem/Gemfile source 'https://rubygems.org' gemspec gem 'private_gem', :git => 'https://xxxxxxxxxxxx…

RubyKaigi 2014 個人的メモ(2日目)

RubyKaigi2014へ入ってきた。せっかく3日も仕事もせず2万円のチケットを購入して参加したので、少しでも多くのことを身につけたいと思うので、印象深かった内容を書き出しておく。

RubyKaigi 2014 個人的メモ(1日目)

RubyKaigi2014へ入ってきた。せっかく3日も仕事もせず2万円のチケットを購入して参加したので、少しでも多くのことを身につけたいと思うので、印象深かった内容を書き出しておく。

Flow.js + S3 + Ruby で分割アップロード バックエンド実装メモ

Railsアプリでの大容量ファイルのアップロードのため、Flow.jsを使って分割アップロードを実装しました。その時の実装メモ。

Ginza.rb で IntelliJ IDEA を布教してきた話

Ginza.rb みんなmac + CUIでアウェー感すごかった。前回の挙手でわかってた。だからこそ、あえてやった。

Rails 4.1 + RequireJS + AngularJS で Single Page Application を作ってみるテスト

Rails 4.1 + RequireJS + AngularJS で Single Page Application を作ってみる

IntelliJ IDEA 13.1 + Ruby plugin 6.5.0.20140314 DE リモートデバッグ on Rails

リモートインタプリタ上でも簡単にデバッガを使用することができました。捗りますね。

IntelliJ IDEA 13.1 + Ruby plugin 6.5.0.20140314 DE リモートインタプリタ Rails開発

IDEA+Ruby pluginのリモートインタプリタ機能で、Windowsホスト上のIDEAで開発中のRubyプロジェクトを、仮想マシン上のRubyインタプリタで動作させたり、デバッグしたりできます。

Windows 8.1 で berkshelf 3.0 をインストール(dep-selector-libgecode問題)

Windows環境でBerkshelf3をインストールしようとして嵌まったもののなんとかうまくいきました。

AWS::ElasticTranscoder::Client

クラウドメディア変換サービスのAPIクライアントライブラリの利用サンプル。

faker

# Faker Perlの`Data::Faker`ライブラリのように偽データを生成します。

Object#to_param / Object#to_query(key)

https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/object/conversions.rb https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/object/to_param.rb https://github.com/rails/rai…

Object#blank?/Object#present?/Object#presence(ActiveSupport)

https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/object/blank.rb ```ruby require 'active_support/core_ext/object/blank' ``` で利用可能になるメソッド。 # blank? コードを書いていてよくある「空白」を統一的…

Object#acts_like?(ActiveSupport)

https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/object/acts_like.rb クラスに`acts_like_xxxx?`というメソッドを定義しておくことで、安全にダックタイピングできるようになります。 例えば、ActiveSupportによっ…

bundlerの使い方

bundlerは今となってはRailsになくてはならないものとなっていますが、ちょっとしたツールやCGIにもどんどん使うべきです。簡単に使えてトラブルを回避できるので、是非使ってみて下さい。 #基本的な使い方 1. Gemfile作成 2. bundle install 3. require 'bu…

IDEA 13.0 から 13.1 にアップデート後、リモートインタプリタで /home/xxxx/.rubymine_helpers/rb/testing/patch/testunit/minitest/unit.rb:24:in `<top (required)>': LoadError (LoadError)

/home/xxxx/.rubymine_helpersを一度削除してから、リモートインタプリタを登録し直す。

bundler

今やgem間の依存関係管理のために欠かせなくなったbundlerの使い方まとめ。 本家 - [Bundler: The best way to manage a Ruby application's gems](http://bundler.io/) 基本 - [基本的な使い方](http://blog.takeyu-web.com/ruby/2014/03/bundler.html) - […

yum updateしたら、nokogiriがエラーを吐いてサービスが停止した。

不覚。 クライアントから連絡が来て、障害発覚。 godで動かしていたrails scriptが再起動後起動に失敗していた。 [ec2-user@app-production-001 current]$ sudo service app-god status delayed_job: delayed_job-0: start delayed_job-1: start delayed_job…

IntelliJ IDEA でSDK(僕はRubyのバージョン)を変更する

Rails開発に使用しているが、リモートインタプリタで使用している Ruby 2.0.0-p247 を 2.1.0-p0 にアップデートしようとして少し手間取ったのでメモ。 新しいRubyのインストール [Project Structure] Project SDK → New → ... で登録 [Project Structure] Mo…

CGI + Sinatra + jpmobile

手軽にやるときはただのCGIスクリプトとして作りたい。 テンプレート処理など面倒はSinatraにまかせつつ、jpmobileの各種フィルタ・ビュー振り分け、絵文字変換などを利用したい。(昔 rack-ketai というgemを書いたが、jpmobileがrack対応した時点で役割を…

Windows8 + IntelliJ IDEA(RubyMine) + Ruby 2.0 + Rails環境の整備

いろいろハマりましたが、だいぶすっきりインストールできたのでメモ。 環境 Windows 8 Pro 64bit Ruby 2.0.0 Ruby on Rails 4.0 / 3.2 IntelliJ IDEA 12 Ultimate + Ruby plugin 5.4.0.20130703

Gemfile中でplatformによる分岐をする

RUBY_PLATFORM定数を利用するのが多いみたい # Windows(MinGW版)ではunicornを使わ(え)ない unless RUBY_PLATFORM =~ /mingw32/ gem 'unicorn' end