标签: learn-ruby-on-rails

无法安装rails - "文件存在@dir_s_mkdir"错误

我安装了导轨并且几乎正常工作.正在努力解决另一个问题我不小心关闭了bash窗口.所以我重新打开它,现在我根本无法使用rails,它告诉我没有安装rails.所以我跑了gem install rails --no-ri --no-rdoc,现在我得到以下内容:

ERROR:  While executing gem ... (Errno::EEXIST)
File exists @ dir_s_mkdir - /usr/local/Cellar/ruby/2.1.1_1/lib/ruby/gems`
Run Code Online (Sandbox Code Playgroud)

如何更正此错误?

ruby-on-rails learn-ruby-on-rails railsapps

7
推荐指数
2
解决办法
5521
查看次数

已请求SMTP-AUTH但缺少用户名

目前我正在做Daniel Kehoe的Learn Ruby on Rails教程.其中一项练习是使用Google的Gmail帐户从"联系"页面发送联系表单.

但是,当我发送联系表单而不是在我的邮箱中收到电子邮件时,我收到此错误:

"SMTP-AUTH已请求但缺少用户名"

在我的config/application.yml文件中,我设置了Gmail用户名和密码.

有谁知道可能是什么问题?

谢谢你的帮助,

安东尼

smtp-auth learn-ruby-on-rails

6
推荐指数
2
解决办法
4572
查看次数

错误的身份验证错误 Rails 连接到谷歌驱动器

我有一个联系人控制器,它有一种方法可以将表单提交的数据连接并保存到我在谷歌驱动器(app/models/contact.rb)上的帐户中的电子表格中:

def update_spreadsheet
    connection = GoogleDrive.login(ENV["GMAIL_USERNAME"], ENV["GMAIL_PASSWORD"])
    ss = connection.spreadsheet_by_title('Learn-Rails02-Example')
    if ss.nil?
        ss = connection.create_spreadsheet('Learn-Rails02-Example')
    end
Run Code Online (Sandbox Code Playgroud)

该方法调用我用 figaro 设置的环境变量,这些变量保存在 config/environments/development.rb 中,如下所示:

GMAIL_USERNAME: tgolsby@gmail.com
GMAIL_PASSWORD: Paxxword (obviously this is a place holder for my actual password in the .yml file)
Run Code Online (Sandbox Code Playgroud)

当我提交表单时,出现以下错误:

*GoogleDrive::AuthenticationError at /contacts
Authentication failed for tgolsby: Response code 403 for post https://www.google.com/accounts/ClientLogin: Error=BadAuthentication*
Run Code Online (Sandbox Code Playgroud)

它指向联系人模型中的以下行:

*def update_spreadsheet*
    **connection = GoogleDrive.login(ENV["GMAIL_USERNAME"], ENV["GMAIL_PASSWORD"])**
    *ss = connection.spreadsheet_by_title('Learn-Rails02-Example')
    if ss.nil?
        ss = connection.create_spreadsheet('Learn-Rails02-Example')
    end*
Run Code Online (Sandbox Code Playgroud)

我已经检查并重新检查了我的用户名和密码,并且 100% 确定它们在 application.yml 文件中是正确的。我已经完成了教程并重复了所有步骤,但我无法弄清楚为什么该应用程序无法连接到谷歌。我还检查过我的谷歌帐户没有设置两步验证。

ruby-on-rails learn-ruby-on-rails

5
推荐指数
1
解决办法
3629
查看次数

Rails应用程序中的环境变量为零(无法连接到Google云端硬盘)

使用" 学习Ruby on Rails"这本书时,我坚持使用教程中连接到Google Drive的部分,将表单提交保存到电子表格中.

我无法通过Google进行身份验证,因为Rails.application.secrets.email_provider_usernameRails.application.secrets.email_provider_password是零.更具体地说,似乎我的rails应用程序没有看到我的任何环境变量.

我已经验证变量设置正确:

ynkwinl-ujurvt0:learn-rails katie$ printenv | grep GMAIL_USERNAME
GMAIL_USERNAME=kjXXXXXX@gmail.com
Run Code Online (Sandbox Code Playgroud)

从控制台:

learn-rails :001 > ENV["GMAIL_USERNAME"]
 => "kjXXXXXX@gmail.com"
Run Code Online (Sandbox Code Playgroud)

但试图通过Rails访问它:

learn-rails :001 > Rails.application.secrets.email_provider_username
 => nil
Run Code Online (Sandbox Code Playgroud)

相关的秘密行.yml:

email_provider_username: <%= ENV["GMAIL_USERNAME"] %>
Run Code Online (Sandbox Code Playgroud)

我已经坚持了一个小时而无法找到答案(关于这个主题的上一个问题涵盖了略有不同的情况).

我通过将用户名/密码硬编码到secrets.yml文件中来解决这个问题,但我想了解将来的参考情况.

完整的'secrets.yml'文件供参考:

development:

  email_provider_username: <%= ENV["GMAIL_USERNAME"] %>
  email_provider_password: <%= ENV["GMAIL_PASSWORD"] %>
  domain_name: example.com
  mailchimp_api_key: <%= ENV["MAILCHIMP_API_KEY"] %>
  mailchimp_list_id: <%= ENV["MAILCHIMP_LIST_ID"] %>
  owner_email: <%= ENV["OWNER_EMAIL"] %>
  secret_key_base: very_long_random_string

test:
  secret_key_base: very_long_random_string

# Do not keep production secrets in the repository, …
Run Code Online (Sandbox Code Playgroud)

learn-ruby-on-rails

5
推荐指数
2
解决办法
1080
查看次数

Ruby类与实例方法的混淆

鉴于课程:

class UserMailer < ActionMailer::Base
  default from: "do-not-reply@mark.com"
  def contact_email(contact)
    @contact = contact
    mail(to: 'm@mark.com', from: @contact.email, subject: "Website Contact")
  end
end
Run Code Online (Sandbox Code Playgroud)

以及以下测试代码:

c = Contact.new
UserMailer.contact_email(c)
Run Code Online (Sandbox Code Playgroud)

这段代码是如何工作的?我认为我的contact_email是一个实例方法,但它作为一个类方法被调用,并且它可以工作.

感谢您的帮助 - 我学习Ruby和Rails :)

-标记

ruby ruby-on-rails learn-ruby-on-rails

3
推荐指数
1
解决办法
135
查看次数