タグ

Rubyに関するakatakunのブックマーク (245)

  • セマンティック・バージョニングと、Gemfileのバージョン指定方法 - Gemfileでよく見る`~>`を使いこなす - Qiita

    セマンティック・バージョニングと、Gemfileのバージョン指定方法 - Gemfileでよく見る`~>`を使いこなすRubyRails ライブラリを使う時、バージョンが合わなくてうまく動かないという問題は、Rubyに限らず、どのプログラミング言語でも常に悩みの種である。特にDepedencyの多いライブラリをインストール/インクルードするときは、大体この問題で躓く。C++とかでGUI関係のライブラリを入れるときは何度も挫折したし、特に、進化が速く変更の多いPerl,PHPをはじめとしたスクリプト言語では普通にそういう問題に出くわす。 もちろんRubyもその例外ではないのだが、より個人がライブラリ(gem)を作って、githubなどに上げ、公開していくという文化がある割に、あまりこの問題に悩まされないので、Ruby(on Rails)は比較的うまくやっていると思う。 これは、Bundler

    セマンティック・バージョニングと、Gemfileのバージョン指定方法 - Gemfileでよく見る`~>`を使いこなす - Qiita
    akatakun
    akatakun 2018/11/15
    Semantic Versioning: バージョン法則のガイドライン,X.Y.Z: Major.Minor.Patch,Major: 後方互換なし,Minor: 後方互換あり,Patch: バグ修正,0.y.z: 例外的にいつAPIを変えても良い
  • クラス名やモジュール名の競合について -プログラミング言語のRubyでプ- Ruby | 教えて!goo

    Rubyのモジュールやクラスは定数です。同じ名前空間で同じ名前の定数を定義することはできません。 ですから、 class A end module A end とすると、A is not a module というエラーになります。 これは、クラスとして定義した A をモジュールとして開き直そうとしています。 但し、この class A と module A が別々のファイルに記述されていて、 class A、または。module A を呼び出した場合エラーにはなりません。 なぜなら、Ruby は定数の探索をして最初に到達したものを採用するからです。 そしてご質問のケースの場合、Ruby は module A を見つけたがクラスではないので、エラーを出しています。 a = A # => エラーにはならない。 a = A.new # => エラーになる。 つまり、同一の名前空間に同じ名前のクラ

    クラス名やモジュール名の競合について -プログラミング言語のRubyでプ- Ruby | 教えて!goo
    akatakun
    akatakun 2018/11/12
    定数の探索をして最初に到達したものを採用する,slack-incoming-webhooksとslack-ruby-gem、Slackというモジュール名は被ってるから、bundlerが最初に読み込んだほうのモジュールしかrequireされてなかった
  • moji 日本語の文字種判定、文字種変換(半角→全角、ひらがな→カタカナなど)を行います。

    Moji モジュール 日語の文字種判定、文字種変換(半角→全角、ひらがな→カタカナなど)を行います。 インストール: 以下のコマンドを実行してください。 $ sudo gem install moji 使い方: Ruby 1.8: $KCODE を指定してから require "moji" してください。 Moji モジュールの関数に渡す文字列の文字コードは $KCODE と一致させてください。 Ruby 1.9: どの文字コードの文字列を渡しても大丈夫ですが、 String#encoding が正しく設定されている 必要があります。正規表現を返す関数( Moji.kata など)は Encoding.default_internal (設定されてない場合はUTF-8)用の正規表現を返します。その他のエンコーディング用の正規表現は Moji.kata(Encoding::SJIS) など

  • [Vim] Vim に Language Server Protocol クライアント機能を導入して Rubyの補完機能を復活させた - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    [Vim] Vim に Language Server Protocol クライアント機能を導入して Rubyの補完機能を復活させた - Qiita
    akatakun
    akatakun 2018/10/30
    https://github.com/uplus/deoplete-solargraphがSolargraphのアップデートで使えなくなったっぽいので
  • Ruby 文字列をハッシュに変換 - Qiita

    "x: 100, y: 200, z: 300" のような文字列を {x: 100, y: 200, z: 300 }のようなハッシュ{sym: int}に変換する方法 ruby2.2で探してみたところ、それ用のメソッドが無いようなので書いてみた。 補足 2.1以降 Array#to_h それ以前 Hash[ ] パターン1 一旦配列にする 文字列を":"と","区切りで二次元配列にして、それを二個ずつ取り出してハッシュに変換する。 def to_hash(str) array = str.delete(' ').split(/[:,]/) array.each_slice(2).map {|k, v| [k.to_sym, v.to_i] }.to_h end

    Ruby 文字列をハッシュに変換 - Qiita
    akatakun
    akatakun 2018/10/04
    evalなるほど,railsのエラーからどのコントローラでエラー発生したか集計するときに使った,zgrep '"controller"' log.*.gz | cut -d ' ' -f 3- | ruby -nle 'h = eval($_); puts h["controller"]' | sort | uniq -c | sort
  • Pryが真の力を発揮してくれる19個のコマンドとコマンドの自作方法[Rails] | 酒と涙とRubyとRailsと

    開発の効率を大きく向上してくれるgem Pryをさらに使いこなすための便利なコマンド19個をまとめてみました。標準のコマンドをしっかり理解してPryの使いこなしを目指します! (04/16 20:55) オススメの記事を追加その2 🎃 オススメ記事Pry の簡易的なコマンドまとめ Pryの設定ファイルや、関連Gemの簡易的なコマンドをまとめてくれている記事。この記事をひととおり読んだあとに、設定をいじると捗るかも! Rails4 今のところ最強なデバッグツール達 開発やテスト環境で使っているGemfileの紹介。pryについてもかなり丁寧に書かれています! Ruby 2.1の基構文/基文法まとめ&Pryの使い方 オープンソースのオブジェクト指向プログラミング言語「Ruby」の文法をゼロから学ぶための入門連載。 🐞 (1) helphelpはコマンドの一覧と英語での説明を表示してくれ

    Pryが真の力を発揮してくれる19個のコマンドとコマンドの自作方法[Rails] | 酒と涙とRubyとRailsと
  • gemライブラリの依存はGemfileではなくgemspecに記述する理由 - Qiita

    Conclusion bundle gemrails plugin newなどでgemひな形を作るときGemfileと.gemspecファイルができる. どちらを使っても依存関係を記述できるように見えてしまう. 結論を言うと他の様々なサイトでも指摘されている通り、gemライブラリの依存関係はgemspecに記述し、Gemfileはgemspec1行書くにとどめておく. 以下のようにgemに依存するgemライブラリを作成し、Gemfile, .gemspecそれぞれに依存関係を記述して挙動をたしかめた. ■今回テストするコード

    gemライブラリの依存はGemfileではなくgemspecに記述する理由 - Qiita
    akatakun
    akatakun 2018/09/29
    再帰的にgemの依存解決するときにgemのGemfileの情報は使われない,ruby appでdep1も追加すればdep2で1を使うことはできるが、ruby appのバージョンが有効になる,ruby appとdep2それぞれに追加して競合すればエラーになる
  • gemspecとGemfileの役割をはっきりさせておく

    gemspecとGemfileの役割をはっきりさせておく Original: URL: Clarifying the Roles of the .gemspec and Gemfile Date: Thursday, December 16th, 2010 at 9:41 pm Translation: URL: gemspecとGemfileの役割をはっきりさせておく (Not Found) Salvaged from Internet Archive 要約 GemfileGemfile.lockは依存関係を厳密に指定するのが目的なので、アプリケーションを開発するときはレポジトリにチェックインすべき。 一方Gemを開発するときは依存関係を緩やかに定義し柔軟性を持たせることが重要なポイントなので、GemfileGemfile.lockはレポジトリにチェックインしてはいけない。 他、Gemf

    akatakun
    akatakun 2018/09/29
    Gemfile.lockは依存関係を厳密に指定するのが目的なので、アプリ開発ではチェックインすべき。 逆にGem開発ではチェックアウトすべき,故にGemfileではソースを記述する
  • gemspec と Gemfile と Gemfile.lock との違い. - Qiita

    依存する gem の取得先を記述します. 通常は取得先は source 行一行だけでよいはず. GitHub リポジトリなどから edge バージョンを取得する場合は,その場所をここに書く. 開発環境と運用環境とで同じ gem をインストールするために使います. bundle などで自動で生成されます. 依存 gem のバージョンと取得先が記録されます. Gemfile.lock の扱いについて Gemfile.lock については,これをリポジトリに含めるかどうかが議論されるのですが,前節で述べたように,「開発環境と運用環境とで同じ gem をインストール」したいかどうかで決めればよいかと思います.すなわち, 確実動作が期待されるアプリでは Gemfile.lock をリポジトリに含める. デプロイの自由度を確保したいライブラリは Gemfile.lock をリポジトリに含めない. (そ

    gemspec と Gemfile と Gemfile.lock との違い. - Qiita
    akatakun
    akatakun 2018/09/29
    gemspec: Gemの依存関係を記述,Gemfile: 依存するGemの取得先を記述,Gemfile.lock: 開発環境と本番環境で同じGemを使用するためのもの
  • Ruby 2.1.0 に追加される不正なバイト列を除去する String#scrub の紹介 : sonots:blog

    Ruby 2.1.0 に追加される不正なバイト列を除去する String#scrub の紹介 : sonots:blog
    akatakun
    akatakun 2018/09/14
    これに対して、ruby 2.1.0 には不正なバイト列を代替文字に置き換える String#scrub メソッドが追加されました
  • Rubyの内部文字コードはUTF-8ではない...だと...?!|TechRacho by BPS株式会社

    こんにちは、hachi8833です。 少し前に、babaさんから「Rubyの内部文字コードはUTF-8じゃないよ」とツッコミがありました。 (追記: 上は会話の途中から切り取りましたのでご了承ください) いきなりの展開にくらくらきましたが、babaさんはさらにたたみかけます。 こうしたことはとっくにご存じの方も多いと思いますが、「Rubyといえば2.0以来UTF-8完全対応なんじゃないの」と勝手に思い込んでた私は脳に掌底をらったような思いです。ああ、でもこういうことがあるから面白い。 ⚓ プログラミング言語と内部文字コードの関係 まず最初に押さえておきたい点です。プログラミング言語で文字コードに関連する部分は、「文字列」「正規表現」「入出力」「コード中の文字リテラル(""の中など)」「コード中の文字リテラル以外の要素(変数名など)」「ファイル名」などが中心になります。そして文字列に関連し

    Rubyの内部文字コードはUTF-8ではない...だと...?!|TechRacho by BPS株式会社
  • Ruby M17N の設計と実装

    はじめに 多言語化概論 M17N とは L10N I18N M17N I18N 等の語源 UCS Normalization と CSI UCS Normalization 方式 Perl’s case (UTF-8) Java’s case (UTF-16) Mosh’s case (UTF-32) TRON’s case (TRON コード) CSI 方式 Ruby M17N の概念 CSI 方式 String がエンコーディングを持つ Script Encoding Magic Comment 外部エンコーディングと内部エンコーディング default_external と default_internal Command Line option -E と -U ロケールエンコーディング ファイルシステムエンコーディング Windows の場合 Unix 系の場合 Mac OS X

    akatakun
    akatakun 2018/09/12
    内部コードをUTF-8とかに決め打ちして、入ってくるバイト列は内部コードに、出ていく内部コードはバイト列に変換,UTF-8で符号化できる文字集合しか扱えない
  • pack テンプレート文字列 (Ruby 3.2 リファレンスマニュアル)

    [edit] 以下にあげるものは、Array#pack、String#unpack、String#unpack1 のテンプレート文字の一覧です。テンプレート文字は後に「長さ」を表す数字を続けることができます。「長さ」の代わりに`*'とすることで「残り全て」を表すこともできます。 長さの意味はテンプレート文字により異なりますが大抵、 "iiii" のように連続するテンプレート文字は "i4" と書き換えることができます。 テンプレート文字列中の空白類は無視されます。また、`#' から改行あるいはテンプレート文字列の最後まではコメントとみなされ無視されます。 整数のテンプレート文字のシステム依存性 各テンプレート文字の説明の中で、 short や long はシステムによらずそれぞれ 2, 4バイトサイズの数値(32ビットマシンで一般的なshort, longのサイズ)を意味しています。s,

    akatakun
    akatakun 2018/09/12
    Cの構造体を渡すときのように、システム依存のサイズとエンディアンに合わせるときはs!などを、ネットワークプロトコルやファイルフォーマットのように、 システムに依存しないデータを扱うときはnなどを
  • 文字列の表記揺れをUnicode正規化で簡単に解決する方法 - Qiita

    ユニコード正規化をすると、半角英数字や機種依存文字などの表記が統一できます。 表記ブレが吸収されることで検索性が高まったり、データの比較なども行いやすくなります。 正規化の手法にはNFD, NFC, NFKD, NFKCがありますが、その中でもNFKCという次のような正規化を行う方法をコードを交えて紹介します。 ウ゛ェ → ヴェ ABC → ABC ① → 1 ㊤ → 上 Ⅲ → III ㌶ → ヘクタール ハンカクカナ → ハンカクカナ ﹣ → - ※ 左辺はU+FE63 Small Hyphen-Minus: 小さいハイフンマイナス - → - ※ 左辺はU+FF0D Fullwidth Hyphen-Minus: 全角ハイフンマイナス 動作環境

    文字列の表記揺れをUnicode正規化で簡単に解決する方法 - Qiita
  • 複数の言語の runtime を持つ Docker image を作る - Qiita

    FROM ruby:2.4.2-alpine # Copy from https://github.com/nodejs/docker-node/blob/bf84a38aeacb4f6aad34e07c79fd3a0084da5cd2/8/alpine/Dockerfile#L3-L66 ENV NODE_VERSION 8.9.1 RUN addgroup -g 1000 node \ && adduser -u 1000 -G node -s /bin/sh -D node \ && apk add --no-cache \ libstdc++ \ && apk add --no-cache --virtual .build-deps \ binutils-gold \ curl \ g++ \ gcc \ gnupg \ libgcc \ linux-headers \ make

    複数の言語の runtime を持つ Docker image を作る - Qiita
    akatakun
    akatakun 2018/09/07
    コンテナを分けるっていう選択肢がありつつ、multi-stage buildは知らなかったのでメモ
  • NodeJSとnodejsコマンド・nodeコマンドの違い - Akata Works

    前々からちょこちょこ気になってたことだったので調べてみた。 RubyイメージのDockerコンテナ内とかUbuntuでNodeJSを使おうと思って調べると、すぐにapt-get install nodejsに辿り着くんですが、このコマンドでインストールされたバイナリはnodeじゃなくてnodejsになるのでいろんな所でちょっとメンドイ。例えばwebpacker実行したら/usr/bin/env: ‘node’: No such file or directoryとなる。 ということで調べてみたところ、こちらもすぐに辿り着いた。 There is a naming conflict with the node package (Amateur Packet Radio Node Program), and the nodejs binary has been renamed from nod

    NodeJSとnodejsコマンド・nodeコマンドの違い - Akata Works
    akatakun
    akatakun 2018/09/07
    書いた
  • docker上のrubyでHello World出力してみる – 不動産屋のエンジニア

    rubyのベースイメージをダウンロードする Docker上でrubyを実行するために、DockerHubからrubyのイメージをダウンロードします。 下記コマンドでダウンロード可能です。 docker pull ruby:2.3.1 で、プロジェクトフォルダを作成して遷移します。 mkdir docker-rails-test cd docker-rails-test test用にtest.rbを作成します。 vi test.rb puts "Hello World☆*:.。. o(≧▽≦)o .。.:*☆" これで準備完了です。 docker runコマンドでrubyコードを実行してみる 下記コマンドでdocker上のrubyで先ほど作成したtest.rbを実行してみます。 docker run --rm -v "$PWD":/usr/src/docker-rails-test -w /

    akatakun
    akatakun 2018/09/03
    -v "$PWD":/usr/src/docker-rails-testで現在のパスを/usr/src/下にマウントする,-w: runコマンドで作業を行うディレクトリ
  • Route 477(2011-01-19)

    ■ [ruby] open-uriでUTF-8でないページを取得するときの注意 Ruby標準添付のopen-uriライブラリを使うと、HTMLを簡単に取得することができる。 irb> require 'open-uri' irb> url = "http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43008" irb> html = open(url).read このとき、文字コードがUTF-8でないことが分かっているなら、第二引数でエンコーディング名を指定しておいた方が良いだろう。(あ、ここからはRuby 1.9の話です。) irb> html = open(url, "r:euc-jp").read 読んだあとは、String#encodeでUTF-8に変換することができる。 irb> html = open(url,

    Route 477(2011-01-19)
    akatakun
    akatakun 2018/08/15
    エンコード時に無効なデータがあれば置換するようにする。ただし、Railsで実行する場合、readの段階でエラーが発生するため、一度バイナリで読み込んでから変換する
  • 31674

    ホーム / ハック / [Ruby] MechanizeとNokogiriを使いCLI上でWebフォームログイン

    31674
  • 標準添付ライブラリ紹介 【第 7 回】 net/http

    書いた人:cuzic はじめに Ruby には便利な標準添付ライブラリがたくさんありますが、なかなか知られていないのが現状です。 そこで、この連載では Ruby の標準添付ライブラリを紹介していきます。 今回は、ネットワークに分類されているライブラリから HTTP を簡単に扱える net/http を紹介します。 net/http で実現できること あなたもロボット型の検索エンジンは使ったことがありますよね。 Google が代表的です。 Google は巡回ロボット (スパイダー・クローラー) と呼ばれるプログラムを 大量に Web を巡回させ、サーバに蓄積・検索を行うサービスを行っています。 Google では、ブラウザからではなく、プログラムによって、自動的に Web ページを 取得し、それを加工しているわけです。 検索エンジン以外にも Web ページを自動的に取得・加工するサービス

    akatakun
    akatakun 2018/08/03
    open-uriはnet/httpのラップ,ファイルを開くときのようなインターフェイスで簡単にHTTP通信ができる,net/httpはopen-uriより低レベルな実装,より効率的にいろいろなことができる