問題タブ [ruby-1.9]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - Ruby 1.9のすべてのUTF-8ファイルの上に魔法のエンコーディングコメントを載せないようにするにはどうすればよいですか?
キリル文字がたくさん含まれているRailsプロジェクトがあります。
# encoding: utf-8
Ruby 1.8では正常に動作しましたが、Ruby 1.9では、ソースファイルの先頭にコメントを指定しない限り、ソースファイルがUS-ASCIIでエンコードされていると想定しています。その時点で、ファイルは考慮されませんUS-ASCII
。
Rubyに「このアプリケーションはUTF8でエンコードされています。特に宣言されていない限り、含まれているすべてのソースファイルをUTF8と見なしてください」と伝える簡単な方法はありますか?
アップデート:
「エンコーディングを挿入する方法:Ruby 1.9ファイルにUTF-8ディレクティブを自動的に挿入する方法」を作成しました。これは、必要に応じてエンコーディングディレクティブを自動的に追加します。
ruby-on-rails - 「互換性のない文字エンコーディング: ASCII-8BIT および GBK」例外に対処する方法は?
「Rails.3rd によるアジャイル Web 開発」を読んでいます。デポアプリケーションを終了するときに、ユーザー名として漢字を入力します。しかし、このエラーが発生しました。これはRuby1.9と関係があるようです
私の環境はwindow xp、Ruby1.9、Rails 2.3.8、sqlite3です。
このエラーの詳細は次のとおりです。
43 行目が発生した app/views/layouts/store.html.erb の表示:
互換性のない文字エンコーディング: ASCII-8BIT および GBK
抽出されたソース (43 行目あたり):
40: <% if flash[:notice] -%>
41: <%=h flash[:notice] %>
42: <%終了 -%>
43: <%=歩留まり:レイアウト%>
誰でもこの問題を解決できますか?
ruby - Google SketchUp で Ruby を更新するには?
現在、Google SketchUp for Mac には Ruby バージョン1.8.5
があり、少し古くなっています。次のコマンドで Ruby を 1.8.7 (OSX のバージョン) に更新できます。
SketchUp は問題なく起動し、Ruby コンソールにはバージョン 1.8.7 が表示されます。
1.9.2
今、私はさらに進んでに更新しようとしてい1.9.2-rc2
ます。Google SketchUpにはi386
、次のコマンドで生成できるバイナリが必要です。
次に、必要なファイルを SketchUp にコピーします。
SketchUp を起動しようとすると、次のエラー レポートが表示されます。
理由を教えてください。
更新1
Dan Rathbunがいくつかのテストを行い、次のことを発見しました。
Win32 で、Sketchup に 1.9.x をロードさせようとしたときに、1.9.x にはもうない ruby C 関数 "rb_set_kcode" の "エントリ ポイントが見つかりません" というメッセージが表示されました (名前が変更され、Ruby の人々はそうしませんでした)。古い名前を新しい名前にエイリアスします。)
基本的に、Sketchup は、Ruby インタープリターをロードした直後に rb_set_kcode を呼び出して、文字エンコーディングを UTF8 に設定します。1.8.x ブランチのどの Ruby でも問題なく動作しますが、1.9.x では、Ruby プロジェクトは文字エンコーディングを完全に再設計し、すべての C 関数に新しい識別子を与え、さらに多くの関数を追加しました。
1.9.x と Sketchup の解決策は、Sketchup が「Ruby Version Agile」である必要があるようです。これは、ボルダーの Google Guys によるコーディングの変更を意味します。
ruby - Ruby1.9.xのYARVコンパイラを無効にする
ruby 1.9.xと1.8.7を使用してコマンドラインから仕様を実行する場合、アプリケーションの開始時間に非常に顕著な違いがあります。私のアプリケーションは、ruby1.9.1または1.9.2よりもruby1.8.7の方がはるかに高速に起動します。アプリケーション開始の差は約18秒です。アプリが1.8.7で初期化されるのに約5秒かかり、1.9.1と1.9.2で23秒かかります。
アプリケーションの初期化時間は、本番環境では大きな問題ではありませんが、BDD開発では非常に大きな問題です。コードを変更して仕様を実行するたびに、反復ごとにさらに18秒待つ必要があります。
このアプリケーションの初期化時間は、アプリケーションの初期化時にバイトコードをコンパイルするYARVに起因すると思います。
YARVがアプリケーションの初期化を遅くすることについては正しいですか?コマンドラインでYARVを無効にする方法はありますか?スペックを実行しているときにのみYARVを無効にできると非常に便利です。
ruby - Ruby 1.9でオーバーライドできる理由!!=!〜?
||
Ruby 1.8が/ or
、&&
/ and
、!
/ not
、のような特定の種類のオーバーロードをサポートしなかった理由は2つあります?:
。
- 短絡セマンティクスは、言語を大幅に変更しない限り、Rubyのメソッドで実装することはできません。
nil
Rubyは、ブール値のコンテキストでのみfalse
falseとして処理するようにハードコーディングされています。
!
最初の理由は/には当てはまりませんnot
が、2番目の理由は当てはまります。/がまだハードコーディングされている!
間だけを使用して、独自の種類のブール値のようなオブジェクトを導入できるわけではありません。他の用途では、/を使用した相補性演算子がすでにあります。&&
||
~
&
|
と!obj
同義であると期待されるコードがたくさんあることを想像できます-ブール値のコンテキストでtrueと評価されるオブジェクトを、 false以外の何かと評価するオブジェクトをコードがどのように処理するのかさえわかりません。obj ? false : true
!!obj
obj ? true : false
!
Rubyが他のfalse値のサポートを導入する予定ではないようです。Ruby stdlibには何もオーバーライド!
されていないようであるため、例は見つかりませんでした。
それは私が見逃しているいくつかの本当に良い使用法を持っていますか?
regex - Ruby 1.9 正規表現の後読みアサーションとアンカー
Ruby 1.9 正規表現は後読みアサーションをサポートしていますが、パターンでアンカーを渡すときに問題があるようです。先読みアサーションでアンカーが渡されると、問題なく実行されます。
先読みと同じように後読みアサーションでアンカーを機能させる方法を知っている人はいますか?
後読みに必要な特別なエスケープ シーケンスまたはグループ化はありますか?
パッチが適用された場合に備えて、1.9.1-p243、p376、および 1.9.2-preview3 でこの動作をテストしました。
ruby-on-rails - RVM および MySQL での Ruby 1.9.2 は、すでに一定の警告を初期化しています
RVM で Ruby 1.9.2.rc2 を使用して Rails 3 RC を実行すると、MySQL ドライバー バンドルから次のような非常に多くのエラーが発生し続けます。
これはrails console
、完全な Rails スタックを必要とする単体テストでは見られますが、同じ環境で Sequel を直接使用するスクリプトでは見られません。
バンドル自体は読み込まれ、MySQL ドライバーは機能しますが、この膨大な数の警告の山は、Rails を介して実行されるすべてのものの前に表示されます。mysql
通常、これは Rails 環境内のどこかで gemが冗長にロードされたために発生します。gem は Gemfile で宣言されています。
これは、Rails オートローダが Mysql ライブラリが既にロードされていることを認識できず、再度ロードしたためだと思います。これを修正する簡単な方法はありますか?
アップデート:
ロードmysql
するかmysqlplus
、両方を同時にロードしないでください。そうしないと、このような警告が表示されます。mysqlplus
Sequelのすべての機能が含まれておりmysql
、Sequel に依存しています。
ruby-on-rails-3 - Geokit Gem 1.5 および Ruby 1.9.2 => 「互換性のない文字エンコーディング: UTF-8 および ASCII-8BIT」
現在、最先端のものを使用してレールアプリを作成しています。Rails3、rSpec2、Ruby 1.9.2、および Geokit 1.5.0。ASCII-8Bit にない特殊文字を含む住所をジオコーディングしようとすると、次のエラーが発生します。
互換性のない文字エンコーディング: UTF-8 および ASCII-8BIT
トレースは次のようになります。
# coding: utf-8
関連するすべてのファイル (仕様、工場、モデル) で使用しました。それでも、「Elsassers Straße 27」のような住所を使用すると、このエラーが発生します。
ヒントはありますか?Geokit はすでに 1.9.1 と互換性があり、したがって、このすべての新しいエンコーディングと互換性があると思いました。
ruby - 行をcsvファイルに追加するRuby 1.9 CSV lib
Ruby 1.9 と CSV lib を使用すると、行を追加できないようです。ドキュメントの例では、ファイルを開き、行を上書きします。ドキュメントに行を追加する正しい方法は何ですか?
ドキュメントの例:
ruby-on-rails - インストールされた ruby-1.9 (rvm) と rails 3、mongrel または thin はシステム ruby を使用
私はrvmを使用しています
と:
ただし、(webrick または thin を使用して) Rails を開始する場合、使用される ruby インタープリターは ruby 1.8.7 です。
Rails サーバーがローカル Ruby ではなくシステム Ruby を使用するのはなぜですか?