我正在尝试将测试追溯应用到一个非常复杂的应用程序(再也不会).我内置了Sendgrid功能,可以在用户注册时向他们发送电子邮件.因此,当我尝试测试注册页面时,它会尝试向我的example@example.net发送一条消息,我收到以下错误:
Net::SMTPFatalError:
550 Cannot receive from specified address <my app's email>: Unauthenticated senders not allowed
Run Code Online (Sandbox Code Playgroud)
但是,我不清楚这是否是我正在进行测试的问题(我正在遗漏的东西 - 我是新的),或者是一个更深层次的问题.自从我从GMail切换到Sendgrid后,当我在服务器上使用它时,我的应用程序应该发送的电子邮件遇到错误,但不是在线.我认为Sendgrid是一个专门的基于Web应用程序的电子邮件服务,但现在我猜我在配置文件中做错了.我设置我的配置的方式是这样的:
初始化/ mail.rb
# SendGrid Settings
ActionMailer::Base.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'heroku.com'
}
ActionMailer::Base.delivery_method = :smtp
Run Code Online (Sandbox Code Playgroud)
我的environment.rb文件中没有任何内容.这个问题表明我可能应该将这些设置切换到environment.rb文件中,但是(显然,我不太了解配置文件),我想知道我是否应该为development.rb设置单独的设置,测试.rb等(另外,我试过那个开关,并没有改变错误).此外,如果有一个变通方法可以让capybara/rspec在测试期间忽略电子邮件请求(或以某种方式处理它是一个虚假的电子邮件地址并测试电子邮件而不尝试发送电子邮件).
谢谢!
尝试使用Thinking Sphinx进行搜索.通过自制软件安装TS和MySQL 跟随此Railscast(虽然我在我的应用程序中使用pg,显然需要),将这些行添加到我的gemfile:
gem 'mysql2'
gem 'thinking-sphinx'
Run Code Online (Sandbox Code Playgroud)
并将以下内容放在我的模型中,低于其他所有内容
post.rb
class Post < ActiveRecord::Base
#...
define_index do
indexes content
indexes :name
end
end
Run Code Online (Sandbox Code Playgroud)
然后我进入终端并尝试rake ts:index,但是我收到此错误:
using config file '/Users/<personal>/rails_projects/<personal>/config/development.sphinx.conf'...
FATAL: no indexes found in config file '/Users/<personal>/rails_projects/<personal>/config/development.sphinx.conf'
Run Code Online (Sandbox Code Playgroud)
捕捞 围绕 在互联网上,并没有发现任何相当回答了这个.我试过运行rake ts:configure(不抱怨)然后rake ts:index,但它不起作用.
一些背景:我刚刚更改了我的终端shell(使用zsh),这会产生各种奇怪的意外变化.我不得不重新安装bundler,然后重新捆绑安装所有我的宝石,然后独立gem安装rake.然后我捆绑更新为好的措施.现在rake似乎工作,但我仍然得到错误.
错误抱怨的配置文件:
indexer
{
}
searchd
{
listen = 127.0.0.1:9306:mysql41
log = /Users/<personal>/rails_projects/<personal>/log/development.searchd.log
query_log = /Users/<personal>/rails_projects/<personal>/log/development.searchd.query.log
pid_file = /Users/<personal>/rails_projects/<personal>/log/development.sphinx.pid
workers = threads
binlog_path = /Users/<personal>/rails_projects/<personal>/tmp/binlog/development
}
Run Code Online (Sandbox Code Playgroud)
任何想法发生了什么/答案可能是什么代码?
有趣的更新 - 我按照这个谷歌集团的问答进入我的rails控制台并输入"Post.sphinx_indexes.length",但我得到了这个非常不同的错误作为回报.看起来我的模型不知何故无法访问宝石?
NoMethodError: undefined method `define_index' …Run Code Online (Sandbox Code Playgroud) 所以我正在研究学习node.js. 我一直在关注这个教程来安装它并尝试一些东西.
无论如何,npm表现得非常奇怪.它会在一段时间内正常工作(例如我改变了它的查看器配置设置),然后突然"消失",以便下次进入
npm ...(anything)
Run Code Online (Sandbox Code Playgroud)
在命令行中,我的shell通知我没有找到npm命令.以前,使用nvm卸载然后重新安装npm已经有效了,但是我不想每隔十分钟就这样做,而且我突然停止工作对我来说非常奇怪.
我想最后一次,它在我编辑然后重新获取我的〜/ .zshrc文件后停止工作 - 只是添加了npm和节点制表符完成插件.
知道发生了什么事吗?我会发布几个基本命令的结果,但我对sysadmin的东西真的很糟糕,我真的不知道在这里要找什么.
nvm -ls
v0.8.22
current: v0.10.2
default -> 0.8 (-> v0.8.22)
Run Code Online (Sandbox Code Playgroud)
哪个节点
/usr/bin/node
Run Code Online (Sandbox Code Playgroud)
哪个npm
npm not found
Run Code Online (Sandbox Code Playgroud)
nvm(这是一个重复的吗?)和npm目录直接在我的根文件夹中.
如果我进入/ usr/bin,则node是文件,而不是目录.还有一个文件npm,但不是文件nvm.
正如上面所说的那样,我真的不知道发生了什么.我搜索过这个,但似乎没有人有这个问题.任何想法发生了什么或如何找出?
编辑注意到我的默认节点不是最新的,我做了所有这些.撇开为什么我的shell自动切换到bin目录(为什么这似乎是一个github回购 - 不知道我的电脑是什么),这是否提供了任何线索?:
? node nvm alias default v0.10.2
default -> v0.10.2
? node nvm ls
v0.8.22
current: v0.10.2
default -> v0.10.2
? node npm
zsh: command not found: npm
? node nvm install npm
######################################################################## 100.0%
Checksums do not match.
Binary download failed, trying source. …Run Code Online (Sandbox Code Playgroud) 我正在使用Capybara编写一些功能测试,用于涉及大量javascript刷新的页面(当用户点击"继续"按钮时,网址将保持不变,但隐藏的内容将被显示,并且显示的内容将被隐藏,因此在页面"上"的任何给定点上存在大量文本/选择器/等,但是对用户是隐藏的.
为了测试这个功能,我希望Capybara的ignore_hidden_elements配置选项为true,因为它最能代表用户体验.
但是页面上还有一些jQuery插件使用花哨的图形来填充隐藏的基本HTML元素,我想使用Capybara为这些元素选择正确的值,而不是尝试使用Javascript手动模拟用户与元素交互.
特别是,我正在尝试测试设置为display:none的Select框,并在用户与它们交互时由jQuery插件填充.我很想能够做到这一点:
select('value', from: 'select_box')
Run Code Online (Sandbox Code Playgroud)
但隐藏了选择框.
所以我尝试了这个:
select('value', from: 'select_box', visible: false)
Run Code Online (Sandbox Code Playgroud)
但那也不起作用.我不愿意将ignore_hidden_elements变为false,因为更难以模拟用户,我必须返回并在许多测试行中添加"visible:true".
知道怎么做吗?有没有更整齐地取消ignore_hidden_elements的选项?
编辑 - 在安德烈的回复之后,我将ignore_hidden_elements变为false,然后像以前一样进行了相同的水豚选择测试:
select 'value', from: 'select_box_id'
Run Code Online (Sandbox Code Playgroud)
而且,就像魔术一样,它起作用了.当我再次将ignore_hidden_elements更改为true并尝试此行时:
select 'value', from: 'select_box_id', visible: false
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Failure/Error: select 'value', from: 'select_box_id', visible: false
Capybara::ElementNotFound:
Unable to find select box "select_box_id"
Run Code Online (Sandbox Code Playgroud)
这不是一个错误吗?我应该报告吗?
我正在尝试将 Apollo 添加到应用程序中。我将使用它来获取数据,并希望遵循最佳实践并使用新的 API(从 Apollo 2.5 开始)来存储本地 UI 状态。
我一直在查看这些文档,但它们的 UI 状态比我想要实现的更简单。
我想移植我一直在 Redux 应用程序中使用的模式,其中许多 UI 元素的值集中存储。在 Redux 中,我有一个 reducer 对象用于存储我的 UI 值,如下所示:
{
dropdowns: {
someDropdown: [{ index: 0, value: 'Selected Value' }]
},
checkboxes: {
someCheckbox: true
}
}
Run Code Online (Sandbox Code Playgroud)
如在,不同类型的元素被表示为对象,其中每个键是 UI 元素的唯一 ID,值根据元素类型而变化。
我也对上述的扁平化版本持开放态度,其中没有按 UI 元素类型划分的子类别。
我还有一个单独的 reducer 存储一些 UI 元素的状态,例如:
{
openDropdownId: 'someDropdown',
openModalId: null
}
Run Code Online (Sandbox Code Playgroud)
至关重要的是,这些数据似乎包括其键不可预测的对象。我既不确定如何使用此类型输入
gql,也不确定如何有效地获取此数据(请参阅问题底部)。
我试过用 Apollo Client 重现这个,但遇到了很多错误。这是我的客户端设置:
例如,对于下拉菜单,其想法是在
states这里存储 open/closed state ,而values存储有关所选值的信息。
import { …Run Code Online (Sandbox Code Playgroud) 我正在使用RVM和Ruby 1.9.3 p448,但是当我尝试运行我的rails服务器时,我收到此错误(加上其他一些东西)
9): Library not loaded: /Users/sashafklein/.rvm/rubies/ruby-1.9.3-p327/lib/libruby.1.9.1.dylib (LoadError)
Referenced from: /Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/posix-spawn-0.3.6/lib/posix_spawn_ext.bundle
Reason: image not found - /Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/posix-spawn-0.3.6/lib/posix_spawn_ext.bundle
Run Code Online (Sandbox Code Playgroud)
奇怪的是,它引用了ruby-1.9.3-p327,这甚至都不是我的RVM安装之一.我应该删除那个Ruby文件夹吗?它没有找到libruby?或者还有什么可能是错的?
编辑 - 完全错误
/Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require': dlopen(/Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/posix-spawn-0.3.6/lib/posix_spawn_ext.bundle, 9): Library not loaded: /Users/sashafklein/.rvm/rubies/ruby-1.9.3-p327/lib/libruby.1.9.1.dylib (LoadError)
Referenced from: /Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/posix-spawn-0.3.6/lib/posix_spawn_ext.bundle
Reason: image not found - /Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/posix-spawn-0.3.6/lib/posix_spawn_ext.bundle
from /Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `block in require'
from /Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:236:in `load_dependency'
from /Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
from /Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/posix-spawn-0.3.6/lib/posix/spawn.rb:2:in `<top (required)>'
from /Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
from /Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `block in require'
from /Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:236:in `load_dependency'
from /Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
from /Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/posix-spawn-0.3.6/lib/posix-spawn.rb:1:in `<top (required)>'
from /Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
from /Users/sashafklein/rails/<appname>/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `block in …Run Code Online (Sandbox Code Playgroud) 我正在编写一个销售应用程序,其中项目具有 :savings 属性,范围从 0 到 100 (%)。我希望显示该属性的单元格的背景颜色可以像在 Excel 中那样有条件地着色。
Excel 条件格式的基本思想是计算出您要处理的范围 (0-100),当您为每个极端指定一种颜色时,它会自动计算出项目之间的颜色应该是什么。所以 100 可能是亮绿色,80 是淡绿色,60 是黄色,40 是橙色,20 是淡红色,0 是亮红色。等等。
我想我可以从详尽的意义上弄清楚如何做到这一点——只需创建一个助手,为 0 到 100 之间的每个整数可能性分配一个具有不同十六进制背景颜色的 CSS 类。但这似乎效率极低,我交叉我的手指以获得某种 Rails 技术、gem 或预先存在的帮助程序,可以使这更容易和更优雅。
有任何想法吗?
我已经查看了Stack Overflow上的所有类似问题,并在他们的文档中尝试了很多东西.我目前的尝试如下.
我想要实现的是基于计算机用户的差异行为.我有一台工作计算机和一台家用计算机,当我在命令行输入"代码"时,我希望工作计算机转到另一个目录,而不是我在家中输入时所需的代码.我试过这个(我的工作用户名是afk,home是sfk):
function code
set result (dirh)
if [contains "sfk" $result]
cd ~/rails
else if [contains "afk" $result]
cd ~/code
else
echo $result
end
end
Run Code Online (Sandbox Code Playgroud)
目前,这是"未知命令包含Users/sfk/.config/fish /"(我的PWD是Users/sfk/.config/fish /当我输入时).我想也许包含只是用于列表,但文档对此并不是特别清楚?知道怎么做这个吗?
编辑
刚试过这个,虽然它不再是错误,但它最终会出现在else情况下,它不应该导致我的用户IS sfk,它包含在dirh字符串中:
function code
set result (dirh)
if test (contains "sfk" $result)
cd ~/rails
else if test (contains "afk" $result)
cd ~/code
else
echo $result
end
end
Run Code Online (Sandbox Code Playgroud) 我在 Rails 应用程序中使用 Postgres。将纬度/经度作为浮点值存储在数据库中。我希望能够比较位置的纬度/经度,但我只知道如何做到完全相等:
Location.where(lat: @lat, lon: @lon)
Run Code Online (Sandbox Code Playgroud)
我的问题是,我希望 Postgres 读取,比如 71.233434 等于 71.233545,或者其他什么。换句话说,我可以查询舍入相等或范围内的相等吗?
我已经在 Google 上进行了相当广泛的搜索(也许使用了错误的术语?我想不出它。“Active Record Postgres float inside”,“Active Record Postgres rounded query”等)。但运气不好。我只找到了如何对来自数据库的值进行舍入,这没有多大帮助,因为这在 Ruby 中很容易做到。
有任何想法吗?我更喜欢某种 Active Record 解决方案(如果存在),但如果不存在,我也绝对会欣赏(指向)实际查询代码的链接。
谢谢!
编辑- 看着这个答案,我尝试了以下操作:
Location.find_by_sql("SELECT * FROM locations WHERE lat = ROUND(30.67035, 0.001)")
Run Code Online (Sandbox Code Playgroud)
希望在数据库中找到纬度值为 30.6703649 的位置,但我遇到了以下错误:
ActiveRecord::StatementInvalid: PG::UndefinedFunction: ERROR: function round(numeric, numeric) does not exist
LINE 1: SELECT * FROM places WHERE lat = ROUND(30.67035, 0.001)
Run Code Online (Sandbox Code Playgroud)
当我尝试相反的方法时,基本上会出现相同的错误,这更有意义:
Location.find_by_sql("SELECT * FROM locations WHERE ROUND(lat, …Run Code Online (Sandbox Code Playgroud) 我正在启动一个Rails教程,告诉我在创建一个新的演示应用程序时编辑gemfile:
source 'https://rubygems.org'
gem 'rails', '3.2.3'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem :development do
gem 'sqlite3', '1.3.5'
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '3.2.4'
gem 'coffee-rails', '3.2.2'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platform => :ruby
gem 'uglifier', '1.2.3'
end
gem 'jquery-rails', '2.0.0'
group :production do
gem 'pg', '0.12.2'
end
# To use ActiveModel has_secure_password …Run Code Online (Sandbox Code Playgroud) rspec ×2
ruby ×2
activerecord ×1
apollo ×1
bash ×1
bundle ×1
capybara ×1
conditional ×1
css ×1
email ×1
fish ×1
formatting ×1
gemfile ×1
graphql ×1
node.js ×1
npm ×1
postgresql ×1
rake ×1
react-apollo ×1
reactjs ×1
rvm ×1
sql ×1
testing ×1
zsh ×1