Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails 4中使用gmail gem_Ruby On Rails_Ruby On Rails 4_Rubygems_Gmail - Fatal编程技术网

Ruby on rails 在Rails 4中使用gmail gem

Ruby on rails 在Rails 4中使用gmail gem,ruby-on-rails,ruby-on-rails-4,rubygems,gmail,Ruby On Rails,Ruby On Rails 4,Rubygems,Gmail,我试图将nu7hatch/gmail gem与rails一起使用,但遇到了一些问题。为了排除与我的应用程序的其他部分发生冲突,我以绝对最少的代码启动了一个新的c9.io实例,但仍然遇到同样的问题。我将基本Rails脚手架更改如下: 档案(新增): routes.rb(新增): 欢迎光临_controller.rb: class WelcomeController < ApplicationController def index Gmail.connect("username"

我试图将nu7hatch/gmail gem与rails一起使用,但遇到了一些问题。为了排除与我的应用程序的其他部分发生冲突,我以绝对最少的代码启动了一个新的c9.io实例,但仍然遇到同样的问题。我将基本Rails脚手架更改如下:

档案(新增):

routes.rb(新增):

欢迎光临_controller.rb:

class WelcomeController < ApplicationController
  def index
    Gmail.connect("username", "password") do |gmail|
      @emails=gmail.inbox.find(:unread)
    end
  end
end
class WelcomeController
index.html.erb(视图):


当我访问应用程序的根目录时,出现以下错误: 无法加载这样的文件--mime/message

Rails告诉我此错误与以下行有关: @emails=gmail.inbox.find(:未读)


有人知道我该如何做吗?

我不确定你现在是否已经回答了这个问题,但我想我会补充我的发现。我认为正确的方法是像omniauth那样在config/initializer中设置一些东西。但是我只是将gem用于一个小的个人项目,所以我决定构建一个
gmail\u客户机
模型,并告诉控制器使用它

//gmail_client.rb

require 'active_model'

class GmailClient
  include ActiveModel::Model

  def build
    Gmail.connect!('some_email', 'some_password')
  end

end
我决定使用ActiveModel,因为我不希望这种东西存储在数据库中

然后在控制器中执行以下操作:

//some_controller
...

def index
  gmail = GmailClient.new.build
  @emails = gmail.inbox.find(:unread)
end

...

哦,这实际上需要一些重新装备。因为你每次都要打开一个连接,Gmail会在15次请求后阻塞。为了防止这种情况,您需要在请求之后添加
gmail.logout
<%= @emails.each do |email| %>
<p><%= email.subject %></p>
<% end %>
//gmail_client.rb

require 'active_model'

class GmailClient
  include ActiveModel::Model

  def build
    Gmail.connect!('some_email', 'some_password')
  end

end
//some_controller
...

def index
  gmail = GmailClient.new.build
  @emails = gmail.inbox.find(:unread)
end

...