2015-03-31 64 views
0

我在app/services ...自定義文件夾中創建了一個名爲TitleParser的服務文件。該文件稱爲titleparser.rb在rails中命名約定。爲什麼我的服務文件不在應用程序文件夾中?

class TitleParser 
    attr_reader :connection 

    def initialize(orig_url) 
    @connection = Faraday.new(orig_url) 
    end 

    def obtain_title 
    response = parse(connection.get) 
    require 'pry' ; binding.pry 
    end 

    private 

    def parse(response) 
    JSON.parse(response.body) 
    end 
end 

在我的模型,我在app /型號我有一個叫鏈路模型調用它。

class Link < ActiveRecord::Base 
    before_create :shorten_url 
    before_create :set_defaults 

    def shorten_url 
    self.short_url = "bit.ly-remix/" + SecureRandom.urlsafe_base64(6) 
    end 

    def set_defaults 
    self.clicks = 0 if clicks.blank? 
    self.title = TitleParser.new(orig_url).obtain_title 
    end 
end 

我得到一個未定義的鏈接:: TitleParser了幾個小時,直到我重命名的文件中的服務title_parser.rb。這裏發生了什麼?這是什麼傳統的規則?

回答

2

這是您遇到的標準Rails命名約定問題。注意你是如何命名的類:

class TitleParser 

使用該名稱,Rails會想要一個名爲title_parser.rb

+0

文件這將是一個很好的參考,雖然沒有明確說明'應用程序/ services'目錄:[紅寶石和Rails命名約定](http://itsignals.cascadia.com.au/?p=7) – vee 2015-03-31 01:08:48

相關問題