使用" 学习Ruby on Rails"这本书时,我坚持使用教程中连接到Google Drive的部分,将表单提交保存到电子表格中.
我无法通过Google进行身份验证,因为Rails.application.secrets.email_provider_username它Rails.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) 在 Chrome 扩展程序中,我试图将 Date 对象保存到存储中,然后将其读回。根据官方文档,
具有“对象”和“函数”类型的值通常会序列化为 {},但 Array(按预期序列化)、Date 和 Regex(使用其字符串表示形式序列化)除外。
我保存到存储为:
var value= new Date(Date.now());
chrome.storage.sync.set({"testdate":value}, function(){
console.log("saved testdate to storage:");
console.log(value);
});
Run Code Online (Sandbox Code Playgroud)
记录值的输出是
2018 年 10 月 16 日星期二 08:22:11 GMT-0700(太平洋夏令时)
我后来从存储中检索为:
chrome.storage.sync.get("testdate", function(items){
console.log("test date from storage:");
console.log(items.testdate);
});
Run Code Online (Sandbox Code Playgroud)
在这种情况下,logging items.testdate 的值是:
对象 原型:构造函数:ƒ对象()hasOwnProperty:ƒhasOwnProperty()isPrototypeOf:ƒisPrototypeOf()propertyIsEnumerable:ƒpropertyIsEnumerable()的toLocaleString:ƒ的toLocaleString()的toString:ƒ的toString()的valueOf:ƒ的valueOf() defineGetter:ƒ defineGetter( ) defineSetter:ƒ defineSetter() lookupGetter:ƒ lookupGetter() lookupSetter:ƒ lookupSetter()获得原:ƒ原()组原:ƒ原()
无法弄清楚如何取回我的日期对象(或转换回日期的字符串表示)
我正在使用 Rails 5.1.6 和 Ruby 2.5.1(尽管在以前的版本中出现了相同的错误)。
将邮件程序从 Deliver_now 切换到 Deliver_later。在我的浏览器中工作正常,但是我一直在尝试让我的集成测试正常工作。似乎使用ActiveJob::TestHelper 中的任何方法都会触发以下错误:
错误:SendJobToContactsTest#test_send_job_to_contacts:SystemStackError:堆栈级别太深
集成测试代码:
require 'test_helper'
include ActiveJob::TestHelper
class SendJobToContactsTest < ActionDispatch::IntegrationTest
...
end
Run Code Online (Sandbox Code Playgroud)
这工作正常:
assert_difference 'ContactJob.count', 1 do
patch update_contacts_user_job_path(@user, @job), params: {job: {contact_ids: [ @contact2.id], message: {message_text: "This is a test"}}}
end
Run Code Online (Sandbox Code Playgroud)
使用performed_enqueued_jobs会触发 SystemStackError:
assert_difference 'ContactJob.count', 1 do
perform_enqueued_jobs do
patch update_contacts_user_job_path(@user, @job), params: {job: {contact_ids: [ @contact2.id], message: {message_text: "This is a test"}}}
end
end
Run Code Online (Sandbox Code Playgroud)
即使只是assert_enqueued_jobs没有performed_enqueued_jobs触发 SystemStackError:
assert_difference 'ContactJob.count', 1 …Run Code Online (Sandbox Code Playgroud) 在我的 Chrome 扩展程序的内容脚本中,我尝试修改网站的图标以(暂时)将其设置为我的扩展程序的图标。但是,我无法找出从内容脚本中引用扩展程序图标的正确方法。我试过了:
favicon.href ='/images/icon-38.png';
console.log("set href of favicon to " +favicon.href);
Run Code Online (Sandbox Code Playgroud)
但 favicon.href 的值最终相对于我所在的任何网站,例如:set href of favicon to https://twitter.com/images/icon-38.png
从我的manifest.json:
"icons": {
"16": "images/icon-16.png",
"38": "images/icon-38.png"
},
Run Code Online (Sandbox Code Playgroud)
在我的后台脚本中,我当然可以用它们的相对路径引用我的图标......但是我如何从内容脚本中做到这一点?