Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
0. 背景 職場その他でいくつかのRailsプロジェクトを見て来て、同じ組織であってもリポジトリが違えば雰囲気が全然違うなと思い、その中でもこれはダメだろうと思ったことがありましたので、自分の備忘録も兼ねて記述します。 ここ2年ぐらいで出会ったRailsプロジェクトを見て感じた例ですので、他にも挙げようと思えば挙げられると思いますが、出会った中での記述ということでご理解ください。 また、技術的、より個別的な事象についてはRails AntiPatternsを読むといいかもしれません。 1. rubocopを導入していない rubocopはRuby Style Guideをベースにしたrubyの静的解析ツールです。Rubyを使ったことのある人で知らない人はいないでしょう。また、Ruby Style Guideについても、Rubyを勉強する初期に一読しておかなければいけないと言われる代物です。
背景 herokuでRailsアプリを動かしていましたが、いかんせん無料なので起動が遅かったり、デプロイ時にR10(60sでタイムアウトする)に引っかかったりと辛くなってきました。 herokuへの課金や移行先を考えるにあたり、折角なのでGoogle Container Engine (GKE)も試してみました。 その際ちょいちょい躓く所があったので、備忘録として手順を残しておきます。 なお、とりあえず動かすことにフォーカスしています。 参考にされる場合、productionとして必要なNginxやSSLなどの諸々は追加で設定してください。 前提 dockerコマンドはインストールされているものとします 動くRailsアプリがあるとします 無ければRails newしたものでも良いですが、DBとの通信を確認できた方が良いです migrationファイルを適当に用意しましょう MySQLで考
Irisのデータをプロットする 有名なアヤメのデータセットを用いて散布図を描いてみます。 まずCSVファイルを用意します。 iris.csv 使用するライブラリ numo-gnuplot Jupyter Notebookを使うとき IRuby : Ruby kernel for Jupyter/IPython Notebook Numo.gnuplot のかわりに Numo.noteplotメソッドを使います。 require 'daru' require 'numo/gnuplot' df = Daru::DataFrame.from_csv 'iris.csv' setosa = df.where(df.Name.eq 'Iris-setosa') versicolor = df.where(df.Name.eq 'Iris-versicolor') virginica = df.wh
5.1.0のbetaがでて、そろそろ4.2もサポート範囲外になりそうなので、4.2から5.0にアップデートすることにしましたので、 色々作業した内容をメモって行きます。 本当は5.1まで一気にあげたい所ですが、まだbetaということで、一旦5.0.2に。 なあに、メジャーバージョンアップに比べればマイナーバージョンアップだし、きっと影響無いに決まってる。(慢心) Rails 5へのアップグレード手順メモ(Rails 4.2.6 => 5.0.0)を参考に作業 http://qiita.com/ryo511/items/2a387df126268fec8c78 を参照 gem のアップデート Rails update ApplicationRecordをActiveRecordのモデルのベースクラスにする を実施。 rubyは既に2.4に切り替え済み、 ApplicationJobは使ってな
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 元記事: Awesome Ruby Ruby 以外の言語, ソフトウェアについては を参照してください. Awesome List in Qiita Awesome Java Awesome JavaScript Awesome Node.js Awesome Python Awesome Go Awesome Selenium Awesome Appium 抽象化 ActiveInteraction - アプリケーション固有のビジネスロジックを管理します. Cells - Rails のコンポーネントを表示します. Decent Ex
はじめに iRuby Notebookは非常に強力なツールなのですが、LinuxおよびMacユーザーには知名度が高いものの、Windowsユーザーはインストールにおけるハードルの高さから利用者が少ないという現状があるようです。 そこで、SciRubyなどのRubyを用いた科学計算の一助になると思われることから、WindowsでiRuby Notebookを使えるようにする手順を整理しました。 Anaconda(Python)のインストール Anacondaは、Pythonと科学計算ライブラリをセットにしたパッケージです。これをインストールするとiRuby NotebookのベースになるJupyter Notebookが利用できるようになります。 以下のURLよりダウンロードできます。 32bit版と64bit版があるので、インストールされているWindowsにあわせてダウンロードしてくださ
ActiveJob はまだまだリトライ制御機能が弱く、retry_job での単純な再実行位しか機能がありません1。 そこで、公式ドキュメントで公開されている API のみを活用し、ある程度の制御が行えるモジュールを作成しました。 成功するまでリトライ まず retry_job を使ったシンプルな例です。 StandardError が発生すると、rescue_fromで補足され、5分後に再実行するようにスケジューリングされます。 ただし、これでは成功するまで無限にリトライが行われてしまいます。リトライ回数の制限を行おうと思っても、現状 ActiveJob ではその制御機構がありません。 当然 Gems もいくつか既に提供されていますが、まだまだ「これが間違いない」と思える gem が出てきてないように思います。 おそらく一番 Github でスターが多いのが ActiveJob::Ret
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 今日は言葉狩りを行いたいと思います。 Rubyではifもwhileも式である 生粋のRubyistである皆さんにとっては当たり前のことではありますが、Rubyではifもwhileも**式(expression)です。決して文(statement)**ではありません。これはCなど他のプログラミング言語にはないRubyの特徴の一つであり1、この違いは小さいようで大きいです。初心者のうちから、この違いを意識しておく必要があります。 プログラミング初心者にとって式と文の違いなんてどうでもいいのではという暴論もあるかも知れませんが、初心者だからこ
マイネット Advent Calender14日目の記事です。 はじめに 弊社ではスマートフォンゲームの運営を行っておりますが、 日々の運用で定常的に発生する作業があります。 定常作業の例 複数プラットフォームの毎日の売上などの情報を管理サイトから引っ張ってきて足し合わせる ○月△日 □時になったら管理サイトで集計を行う etc... いずれも作業としては単純ですが、手動で行うと面倒なだけではなく、ミスの原因にもなります。 これらの作業はたいてい単純作業ですが、作業をエンジニアしか行うことが出来ない場合があり、非効率なこともあります。 また、自動化の方法はいくらでもありますが、弊社の特徴として買収・協業を行っているタイトルがあり、その中には以下のような制限が存在することもあります。 sudoが使えない(権限がない、cron仕込めない、ツールも入れられない) 勝手にAPIとか追加できない そ
はじめに JuanitoFatas/fast-rubyにRubyの役割の似たメソッドのパフォーマンスがまとまっていたが、結果だけでなくコードも並べて一覧化したかったので、当該リポジトリをcloneしてきて、以下のscriptを実行してまとめなおした。 File.open('./result.md', 'w') do |dest| $stdout = dest Dir.glob('code/**/*rb').each do |f| dest.puts "## #{File.basename(f, '.rb')}" dest.puts "\`\`\`rb" dest.puts File.open(f).read dest.puts "\`\`\`" dest.puts dest.puts "\`\`\`" require "./#{f}" dest.puts "\`\`\`" dest.put
注意: 指標にはなりますが場合によってはパフォーマンスが異なったり挙動が変わったりコードの可読性にも影響するのでちゃんとパフォーマンスを見ながら、テストしながら書きましょう。 参考 https://github.com/JuanitoFatas/fast-ruby https://speakerdeck.com/sferik/writing-fast-ruby メモ Arrayの数を数えるならArray#sizeもしくはArray#length(Enumerable#countを使うより速い) Arrayの検索にはArray#findもしくはArray#detect(Array#select.firstより速い) Arrayのランダム取得にはArray#sample(Array#shuffle.firstより速い) Arrayの最初の要素の取得はArray#[0](Array#firstよ
はじめに 今、最も注目されているJavaScriptフレームワークの1つであるAngular(9.xx)と、同様に注目度の高いBaaS(Backend as a service)であるFirebaseを使って、チャット用WEBアプリをハンズオン形式で書いていきます。 「Angular+Firebase」のリアルタイム更新に興味がある方はご一読ください。 (追記:2017/6)本記事は元々「Angular2+Rails5でチャットアプリを作る」と題していましたが、ここ半年ほどひたすら「Angular+Firebase」を触ってきたので、「Angular+Firebaseでチャットアプリを作る」として、現時点(2017年6月)での最新の内容に書き換えています。 (追記:2018/1)現時点(2018年1月)での最新の内容に書き換えています。 (追記:2018/9)現時点(2018年9月)での最
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く