質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Q&A

解決済

2回答

892閲覧

Rubyスクリプトから特定のモデルのデータを引き出そうとすると uninitialized constant (Model名) (NameError)となる

mannnakakunn

総合スコア24

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

0グッド

0クリップ

投稿2020/05/23 07:48

編集2020/05/23 09:00

やろうとしていること

Cloud9環境でRuby on Rails5、Mecab、nattoを使って
自分の作成したアプリ内の記事DBから記事タイトルを取ってきて自動的にタグを生成するためのスクリプトを作ろうとしています。

できていること

現在、一般的なテキストを形態素解析することはできている模様です。

できていないこと

問題は、すでにモデル内に保存されている記事データをすべて取り出し、each文で各要素を取り出し、解析し、タグづけしていくという流れの中の、はじめ一歩である記事データの取り出しからつまづいています。

###エラー文
uninitialized constant News (NameError)

###コード

Ruby

1#/models/mecab.rb 2require "active_record" 3require 'natto' 4 5# 準備体操(一般的なテキストの解析) 6 7 text = 'すもももももももものうち' 8 nm = Natto::MeCab.new 9 nm.parse(text) do |n| 10 puts "#{n.surface}\t#{n.feature}" 11 end 12 13# 本番(自動タグづけへの道のり) 14# Newsモデルから各記事を取ってくる 15 nm2 = Natto::MeCab.new 16 @news = News.all 17

ニュースモデルについて追記します (5/23 18:00)

Ruby

1models/news.rb 2class News < ApplicationRecord 3 4acts_as_taggable 5 6belongs_to :user 7validates :content, length: { maximum: 140 } 8 9end

Ruby

1実行結果 2 3ec2-user:~/environment/abc_app (master) $ ruby app/models/mecab.rb 4すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ 5も 助詞,係助詞,*,*,*,*,,,6もも 名詞,一般,*,*,*,*,もも,モモ,モモ 7も 助詞,係助詞,*,*,*,*,,,8もも 名詞,一般,*,*,*,*,もも,モモ,モモ 9の 助詞,連体化,*,*,*,*,,,10うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ 11 BOS/EOS,*,*,*,*,*,*,*,* 12Traceback (most recent call last): 13app/models/mecab.rb:14:in `<main>': uninitialized constant News (NameError)

素人質問ですいません。用語とか誤っているところもあるかと思いますが、
どなたかご教示いただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ec2-user:~/environment/abc_app (master) $ ruby app/models/mecab.rb

実行方法に問題があります。

Modelの名前から自動的に適したスクリプトを読み込むのはRailsの機能なため

rails runner app/models/mecab.rbとする必要があります。

投稿2020/05/23 09:07

asm

総合スコア15149

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mannnakakunn

2020/05/23 22:06 編集

こちらの実行方法の見直しでやりたいことができました。解説も他のウェブで紹介されているよりもわかりやすかったです。(Modelの名前から自動的に適したスクリプトを読み込むのはRailsの機能というところ)ありがとうございました。
guest

0

プログラムは載せているので全てですか?
ですと class News が定義されていませんから、そのエラーとなります

投稿2020/05/23 08:36

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mannnakakunn

2020/05/23 09:00

早速のご回答ありがとうございます。失礼いたしました。class newsは追記のとおり、定義しております。よろしくお願いします。
winterboum

2020/05/23 09:09

require "active_record" とあったので、素のrubyで"active_record"をつかうというのかと思ったのですが、Railsの構造の中にあるのですか?
mannnakakunn

2020/05/23 22:11

ありがとうございます。そちらは解決方法がわからず模索する中で、入れてしまった一文でした。 Railsの構造の中にはあるはずです。asm様のご指導のとおり、rails runnnerで実行するとできましたが、" require active record"のところは消しても実行できたので蛇足ということになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問