Ruby 初心者スレッド Part 62
■ このスレッドは過去ログ倉庫に格納されています
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお Ruby on RailsについてはWEBプログラミング板で 前スレ Ruby 初心者スレッド Part 61 https://mevius.5ch.net/test/read.cgi/tech/1503644351/ るりまサーチ (リファレンス検索) http://rurema.clear-code.com/ Rubyist Magazine - るびま http://jp.rubyist.net/magazine/ 逆引きRuby http://www.namaraii.com/rubytips/ 質問 Arrayで事足りるケースにしかまだ出会ってないけど Enumerableってどういう時に使うの? >>665 p ([].each).class.ancestors 初歩の初歩な質問ですけど… 配列に0から99までの数字を一括で格納したいです a = [0,1,2...と記述していてはとても長くなるので… どうすれば良いのでしょうか? そういえば (0..99).to_a で気づいたけど、>>665 のいう Enumerable は Range クラスも持ってるな ちょうどいい例じゃね? EnumerableならPrimeクラスの使い方見てみるのもいいかもね Windows10 Home 64ビット版に、 RubyInstallers の、7-Zip Archives の所からダウンロードした、 Ruby 2.4(x64)ポータブル版、The MSYS2 DevKit 無しで、 コンパイルせずに入れられる gem だけで、遊んでみた 以下は、入れた gem です 先に、bundler を入れて、以後のgem は、bundle install で入れた rack-test は、sinatra のテストに使う。 Nokogiri VS Code の拡張機能用の、solargraph 入れたgem と、irb, erb, minitest, sinatra が、正常に動いた #{hoge}などの形で入力をそのまま正規表現に入れた場合に、入力に正規表現が含まれていると意図しない挙動が起こると聞いたのですが、どのように回避するのが良いのでしょうか? systemメソッドでperlのワンライナーを呼び出す >>674 #{hoge}などの形で入力をそのまま正規表現に入れない。 具体的には、Regexp.escape などでエスケープ処理した文字列を利用する。 空港のwifiからアクセスした際にログイン出来ないという報告がありましてログを見たところ ActionController::InvalidAuthenticityTokenというエラーが出ていました CSRF対策の仕組みが関係することは分かったのですが なぜこれが発生するのか分かる方いらっしゃいませんでしょうか 空港やホテルは、設定が厳しい。 LAN 内ですら、お互いに通信できないだろ 隣の人のスマホと、アクセスできないだろ 空港やホテルの、wifiは危険だから、設定が厳しい 「空港 wifi セキュリティ」で検索! Windows10 Home 64ビット版に、 RubyInstallers の、7-Zip Archives の所からダウンロードした、 Ruby 2.4(x64)ポータブル版、The MSYS2 DevKit 無しで遊んでみた 日本語については、 Windows の設定画面から、ユーザー環境変数へ追加します。変数名・値は、 RUBYOPT --encoding=UTF-8 これで外部エンコーディング・Encoding.default_external が、 Windows-31J から、UTF-8 へ変更されるので、 Ruby 起動時のコマンドライン引数に、日本語を使えます ただし、この環境変数を追加すると、irb が動かなくなる。 この環境変数が無ければ、 irb -E CP932 で、Windows-31J で、正常に動くので、 irb を使う人は、環境変数を追加せずに使う >>681 大変申し訳ないが一回だけ言うね 日記の続きは貴方の個人的なブログでお願いしたい ここはみんなのスレなのでご理解ください 備忘録とか日記のネタとか書くのは問題ないだろ 普段はそこまで賑わっているスレじゃないんだから 雑談OKなわけだし、初心者にはありがたい情報じゃないのかな レス読んでないけど、情報共有するならここに書くよりかQiitaにあげた方が有益だと思うけどね まぁどっちでもいいわ irb のソースコードを見て、誰か、 外部エンコーディング・Encoding.default_external が、 UTF-8 でも動くように、修正してくれないかな? それと、Windows で、Ruby を使っている人も、書き込んでほしい。 Windows の、Ruby 使いが少ない 自分で直してPull Reques出せ 基本的にWin使いに人権はないので、Winのためにソースを汚すことは嫌われるから注意 I’m like pp, just like pp irb がクソみたいな描画ライブラリを使わずに、 GUI だけを、PowerShell を使ってくれたら良いのに。 PS なら、UTF-8 だし ロジック・GUI が分離できていて、 簡単に、PS に切り替えられたら良いのに お前は何を言ってるんだ RubyはUNIXにべったり密結合している それを良く思っていないのはRuby村においては被差別民であるWin使いだけ Windows で、Headless Chrome でテストしている香具師いる? Windows 10, Ruby, Chrome, Selenium WebDriver は、64ビット版だけど、 Windows 用の、ChromeDriver は、32ビット版しかないけど、これで正常に動くの? rubyからOpenGLを扱うgemがいくつかあるけど、 どれが一番使われてるの? Unicodeコードポイントにスケープされた4バイト文字をJSON..#parseすると怒られるんだけど、何かいい方法ないかな? 愚直にgsubするしかないのかな https://ideone.com/V6sNRh >>695 RubyのJSON.parseがUnicodeコードポイントエスケープに未対応なのかな? 「¥u{XXXXX}」を「¥uXXXX¥uXXXX」に変換してやればよさそうだけどね Windows 10 Home, Ruby, Chrome, Selenium WebDriver は、64ビット版で、 ChromeDriver (32ビット版)も使えるけど、 Chrome v63 を、headless で使うと、エラーになる 「failed to launch gpu process.」 --headless, --disable-gpu を設定する必要がある selenium-webdriver は、コンパイル無しで、gem を簡単にインストールできた >>695-697 Ruby 2.4 からは、5バイト以上の絵文字なども、正規表現で使えると聞いた。 JSON では、そういう文字も使えないの? ReactDOM.render( <div> <h1>Hello, world!</h1> <h2>texttext</h2> </div>, document.getElementById('app') ); JavaScript の中に、直接HTML を書ける、 JSX みたいな書き方が、Ruby にある? 出来れば、erb のような書き方は、避けたい iCloud 9のコマンドプロンプト打っても俺のパソコンに反映されないんですが助けて >>698 規格上は使えるけどRubyのJSONライブラリがまだ対応していないっぽい 改訂2版 パーフェクトRuby、Rubyサポーターズ、2017 この本は、ツールの説明なども多いから、読むのに時間がかかる keyには現状:aか:bしか来ないけど将来的には増えるかもしれないとする。 ダックタイピングを意識して次みたいに書いてみたんだけどこれだと、 keyの種類が増えた時にそれに対応するクラスだけじゃなくてcase文も増やさないといけなくなる。 上手い書き方無いかな? def hoge(key, value) x = case key when :a then A.new(value) when :b then B.new(value) end x.huga x.hage end def hoge(key, value) x = {a: A, b: B}[key].new(value) x.huga x.hage end def hoge(key, value) x = Kernel.const_get(key.capitalize).new(value) x.huga x.hage end それは、典型的なオブジェクト指向の利点 派生クラスを使えば、switch〜case 文が無くなるから、 その部分の修正もしなくてよい 各派生クラスで、クラス内でオーバーライドされた、同名のメソッドを呼ぶだけ レンタルサーバーにRubyをインストールする手順に関する質問はここで良いでしょうか? Railsの方が良いでしょうか? Webサイトちょっと動かしたいだけなら自分で運用構築なんて時間の無駄だからPaaS使うことを強くお勧めする 環境構築には、vagrant, chef は、Ruby でレシピ(手順書)を書ける。 Docker もある 仮想環境コンテナ総合スレ Docker、Vagrant等 [無断転載禁止]c2ch.net https://mevius.5ch.net/test/read.cgi/tech/1487235664/l50 FJORD BOOT CAMP(フィヨルドブートキャンプ) https://bootcamp.fjord.jp/ 無職なら誰でもオンライン無料学習 Ruby の女神・池澤あやかは、島根県のRuby合宿で、Rubyを極めたらしい 今日mechanizeを使い出したんだけどいいなこれ なんで今まで使わずにスクレイピングしてたんだろってくらい感動した バージョン2.2.0以降次のコードがSecurityErrorにならないんだけど、仕様が変わってマニュアルの情報が古くなってるのかな? $ ruby -ve '$SAFE = 1; open(ARGV[0])' hoge Traceback (most recent call last): 2: from -e:1:in `<main>' 1: from -e:1:in `open' -e:1:in `initialize': No such file or directory @ rb_sysopen - hoge (Errno::ENOENT) >>715 ARGVの文字列がexternal_str_new_cstr()で作られてるみたいだけど、 windowsだとUTF8_PATHが真になって、文字列がrb_external_str_new_cstr()で作られてないから taintになってないっぽい atomのautocomplete-rubyが動かないです rsenseのパスは通しているのですがエラーが出ます rsense startを実行後、localhost:47367にアクセス出来ないことから rsenseのエラーだとは思うのですが対策がわかりません。 ruby 2.4.1、rsense 0.5.18 です https://teratail.com/questions/67165 ではJRuby 1.7.26にしてからrsenseをインストールするとできると書いてありましたが、JRuby 1.7.26ではrsenseがインストールできませんでした。 エラーは下記 autocomplete-ruby: exec error: Error: Command failed: ~/.rbenv/versions/2.4.1/bin/rsense start --port 47367 --path /Users/{ユーザー名}/Programming/ruby-book rsense version 0.5.18 Usage: rsense <start|stop|restart> /bin/sh: line 1: start: command not found (You might need to set the rsense path, see the readme) >/bin/sh: line 1: start: command not found start コマンドは存在しない >(You might need to set the rsense path, see the readme) rsense のユーザー環境変数PATH を設定しないといけないのかな? まあ、readme を読んで >autocomplete-ruby: exec error: Error: Command failed: ~/.rbenv/versions/2.4.1/bin/rsense > start --port 47367 --path /Users/{ユーザー名}/Programming/ruby-book これは全体で、1行のコマンドじゃないのか? これを、rsense の後ろで、改行して打ったのか? 1行で打つか、または行末で改行を、\(バックスラッシュ)でエスケープすれば? 行末を「rsense \」とする 端末・コマンドプロンプトなどで、 which rsense, where rsense などと打てば、 rsense の実行ファイルがあるディレクトリが、 環境変数PATH に設定されているかどうかがわかる rsense の実行ファイルがあるディレクトリが、 環境変数PATH に設定されているなら ~/.rbenv/versions/2.4.1/bin/rsense のように、パスを付けて書かなくても、 単に、rsense と打っても、実行ファイルを探せる rsense start --port 47367 --path /Users/{ユーザー名}/Programming/ruby-book だから、こう打てばよい Windows10 で、poltergeist のインストールに失敗 Fetching websocket-driver 0.7.0 Installing websocket-driver 0.7.0 with native extensions MSYS2 could not be found. websocket-driver-0.7.0-java.gem をダウンロードしたけど、MSYS2 を入れていないから。 (MSYS2 は、2GB 近くあるらしいので、わざと入れていない) このgem ファイルは、Windows用のコンパイル済みバイナリではないの? Anemone, mechanize は、静的なHTML用じゃないの? JavaScript も解釈できるの? poltergeist から、phantomJS を使おうとしたけど、インストールできないから、 >>698 で書いたように、Chrome のヘッドレスモードを使っている >>719 atomでの話とターミナルでの話が混ざっていてすみません。 atomでパスを ~/.rbenv/versions/2.4.1/bin/rsenseと書くと718で書いたエラーが出ます。 エラー内容はstartコマンドがないと言っているので確認のため ターミナルで$ rsense startと打つとプロセスは走ります。 ただプロセスが走っているのにlocalhost:47367にアクセスできません。 localhost は、つながらないとか、色々とバグるから、 127.0.0.1:47367 を使うこと rsense start で、サーバーは確かに、47367 ポートで起動しているのか? lsof とかで、開いているポートを調べる >atomでパスを ~/.rbenv/versions/2.4.1/bin/rsenseと書くと718で書いたエラーが出ます 漏れも、VS Code を使っているけど、 VS Code 内のPowerShell では、よくバグるから、 外部でPowerShell を起動して使っている 外部から、コマンドプロンプト・端末・PowerShell を起動してやれば? >atomでパスを ~/.rbenv/versions/2.4.1/bin/rsenseと書くと718で書いたエラーが出ます ~(チルダ)が、自分のホームディレクトリに解決できないとか? .rbenv って、探索パスの順序を入れ替える、仮想化技術だろ。 環境変数PATH の一番前に、追加しているから、危険で影響が大きそう。 .rbenv について、よく調べた方が良いかも export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" また、rbenvでrubyをインストールしたり、gemでパッケージをインストールした後は、 rbenv rehashを実行しなければならないとか > .rbenv って、探索パスの順序を入れ替える、仮想化技術だろ。 なにも仮想化してないので、仮想化技術ではない pyenv, virtualenv(venv)などのPythonの仮想環境構築も、これと同じ 環境変数PATH の前方に、パスを追加して、実行するコマンドの探索パスを変えることで、 実行されるファイルを変える rsenseがどうにも動かないのでatomでは他の補完パッケージを使うことにしました bundle exec を付けないと、パスが探せないとか >>730 ターミナルではコマンドが実行できるのでパスは通っているはずなんですが 指定されたポートのローカルサーバーにアクセス出来ない。 ($ rbenv which rsense で ~/.rbenv/versions/2.4.1/bin/rsense が出ます) atomではパスを通す前はno such directryのエラーがパスを通すとcommand not foundになるので パス自体は通っているとは思うのですがコマンドが見つからない理由がわからない。 すみません、いろいろ言ってもらったのですが改善できなそうでした。 Rubyスクリプト内から別のRubyスクリプトを実行して、エラーが出ても元のRubyスクリプトの処理を止めない方法はありますか? シェルコマンドでruby実行すればいいだろ 所詮Rubyなんか書捨てスクリプトなんだからスマートさなんか気にしないで手っ取り早い方法を選べばいい >>719 にも書いたけど、 >autocomplete-ruby: exec error: Error: Command failed: ~/.rbenv/versions/2.4.1/bin/rsense > start --port 47367 --path /Users/{ユーザー名}/Programming/ruby-book これを、1行で打たないといけない! これを、rsense の後ろで、改行したらダメ! それか、{ユーザー名} のユーザー名に全角文字を使ったとか、半角空白が入っているとか。 どこかに半角空白が入っていると、そこで区切られるから、引数が多くなるのでエラーになる。 だから、" " で囲う必要がある --path "/Users/{ユーザー名}/Programming/ruby-book" これを、" " で、囲ってみ >>731 エラーメッセージが、no such directry から、command not found に変わったなら、 rsense コマンドは使えるけど、たぶん、そのサブコマンドが間違っている >Usage: rsense <start|stop|restart> rsense の後に、これらのサブコマンドを正しく続けなければならない >>721 にも書いたけど、 ~/.rbenv/versions/2.4.1/bin/rsense のように、パスを付けて書かなくても、 単に、rsense と打っても、実行ファイルを探せる rsense start --port 47367 --path "/Users/{ユーザー名}/Programming/ruby-book" それと、Linux なら、/var/log の下にあるログファイルを見て、 もっと詳しいエラーメッセージを取得して検索する >>732-734 外部コマンドをバッククォートで囲むとか、IO.popen を使って、 終了ステータス「$?」で分岐する Rubyで外部コマンドを実行して結果を受け取る方法あれこれ https://qiita.com/tyabe/items/56c9fa81ca89088c5627 resText = "" IO.popen("where notepad") { |io| resText = io.read } puts "終了ステータス : #{$?}" puts resText 出力結果 終了ステータス : pid 9872 exit 0 C:\Windows\System32\notepad.exe C:\Windows\notepad.exe Windows向けのRubyバイナリですが ASRの2.5はいつ出るんでしょうか? RubyInstallerはOLEがうまく動かないのでASRを使っています。 RubyはWindowsで使うものではない WinでRubyなんてプロダクションでは全く使われていないので、最新バージョンに追従しなければ何かまずいことになるというプレッシャーは無く、 有志が気が向いたときに遊びでやってるだけだ そんなものに期待するのがそもそもの間違い いい加減諦めてWSLかVMかMacに移行しなさい WindowsでRuby使うとかマゾもいいとこ。 おとなしくPythonにしとけばいいのに。 日本語の情報が豊富!とか言って初心者釣ってたやつらにも責任がある。 コミュニティがシェア9割のWindowsを親の仇のように嫌ってる時点で初心者向けなんか有り得ないというのに。 Windows10 Home で、WSL(Windows Subsystem for Linux)正式版を簡単に導入できた MS Store から簡単に、Ubuntu 16.04 をダウンロードできた。 サイズは、200MB ほど パッケージマネージャーで、Ruby 2.3 も簡単にインストールできた >>737 OLEがうまく動かないってどういうこと? 最近のwindowsは32bit版のODBCと64bit版のODBC分かれてるから データソース作るときにどっちか逆になると繋がらないことがたまによくある 環境はwindows7の32bitだ そんで同じスクリプトで ASRなら繋がるけどRubyInstallerだと繋がらないんだ まず、エラーメッセージを取得して、それで検索することから始める AWSのCloud9のRubyで アラーム代わりにwavやmp3を再生したいんですけど、かんたんにできるでしょうか bokete みたいなwebサイト作りたいんですけど何種類かアイデアあるんすけど ruby ➡ Ror php ➡ WordPress どっちがいいっすか? ruby -e "puts 'abc'" ruby -e 'puts "abc"' 1-liner で、上はWindows、下はLinux でのクォーテーションだけど、 簡単に相互を置換する方法はない? ruby -e "puts 'abc'" 例えば、これの、" を' に置換すると、 ruby -e 'puts 'abc'' となって、区別できなくなる >>749 もちろん、Rails >>748 Ruby関係ない 純粋にJavaScriptやHTML5の話 >>750 WindowsだろうがLinuxだろうがワンライナーならどちらのクォーテーション・マークでも動作するから置換する必要はない それでも置換するなら、簡単なものなら..tr('"\'','\'"') 真面目にやるなら式中の"を%Qに'を%qにでもすればいいんじゃない Array#zipに関する質問です。 aを二次元座標[x, y]の配列として a[0].zip(*a[1..-1])と同じ動作を効率的にできるだけ短く書くコードを教えてください。 >>753 そんなところをハックしてもパフォーマンスは一ミリも改善しません 速くしたいなら他の言語を使うか、SQLをチューニングましょう aの要素数が滅茶苦茶多いと、引数に渡すだけで大変そう 速いかは知らないけど a.transposeでいいんじゃないの >>757 transposeなんてメソッド存在していたとは……知らなかった。 というかriのArray#zipで言及して欲しい。 よく使うクラスだけでもマニュアル全部読んでおくといいよ大した量じゃないし 普通は、transpose ぐらいあるだろ。 R なんて、行列が逆だから、transpose が無かったら、混乱する module Enumerable だけは、読んでおけ Windows10 の、Chrome の自動操作で、 SeleniumWebDriver では、Ruby から起動したブラウザが、閉じてしまう。 sleep で、待つ事はできるけど ブラウザが閉じないように、出来ないの? それか、iMacros を使うしかないのか? ActiveRuby (Beta 版)と言う、Rails など、40 gem、有用なライブラリ一式をまとめた、 Windows 用の、Precompiled Ruby があるね Ruby 2.3.4 で、容量は、1GB ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる