我喜欢使用RSpec的include配置方法来包含仅用于命名空间的模块,这样我就不必为其内部类和模块使用完全限定名.这适用于Ruby 1.9.2中的RSpec 2.11.0.但现在在Ruby 1.9.3上这已不再适用了.我怎样才能让它再次运作?
这是一个示例foobar_spec.rb:
module Foo
class Bar
end
end
RSpec.configure do |config|
config.include Foo
end
describe Foo::Bar do
it "should work" do
Bar.new
end
end
Run Code Online (Sandbox Code Playgroud)
如果您通过以下命令调用它:
rspec foobar_spec.rb
Run Code Online (Sandbox Code Playgroud)
它可以在Ruby 1.9.2中正常工作.但它会在Ruby 1.9.3中引发以下错误:
Failure/Error: Bar.new
NameError:
uninitialized constant Bar
Run Code Online (Sandbox Code Playgroud) 我正在使用Chrome stable 46.
我有一个非常基本的网站.一个button.onclick fetch('a')和一个<a>打开的标签b.这两个URL a和b不存在的,我打算抓住他们的服务人员和刚刚返回new Response().
如果我单击提取的按钮a,服务工作者不参与,我收到404错误.
但是,如果我点击进入的链接,b服务工作人员就会获取并返回响应.
问题:为什么服务工作者没有为fetch('a')请求获取任何FetchEvent ?
请参阅以下文件
HTML
<html>
<body>
<p><button onclick="fetch('a');">fetch a</button></p>
<p><a href="b">go to b</a></p>
<script src="js.js" defer></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
js.js
navigator.serviceWorker.register('sw.js');
Run Code Online (Sandbox Code Playgroud)
sw.js
self.onfetch = function(event) {
var request = event.request;
event.respondWith(
caches.match(request).then(function(response) {
return new Response('here is your onfetch response');
})
);
};
Run Code Online (Sandbox Code Playgroud) 我有一个发送电子邮件的应用程序,并且好几个月,它运行正常.我最近遇到了utf-8发送到iPhone的编码电子邮件的问题Exchange account(即没有IMAP).
所有的接收者都必须看到一大堆毫无意义的人物LS0tLS0tPV9QYXJ0XzE0N18[....].
将我的电子邮件标题与Gmail进行比较后,我注意到我有一个额外的Content-Transfer-Encoding关联Content-Type: multipart/alternative;.
我的电子邮件看起来像
Delivered-To: ...
Received: ...
...
MIME-Version: ...
Content-Type: multipart/alternative;
boundary="----=_boundary"
Content-Transfer-Encoding: Base64 # <= the extra setting
----=_boundary
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: Base64
YmVu0Cg==
----=_boundary
Content-type: text/html; charset=utf-8
Content-Transfer-Encoding: Base64
PGh0bWwgeG1sbnM6bz0iIj48aGVhZD48dGl0bGU+PC90aXRsZT48L2hlYWQ+PGJvZHk+YmVub2l0
PC9ib2R5PjwvaHRtbD4NCjx9IjAiIC8+Cg==
----=_boundary
Run Code Online (Sandbox Code Playgroud)
如果我删除了额外的设置,我的电子邮件将被收到并正确显示.
我的问题:
Encoding基本需要设置Content-Type: multipart/alternative;,即使是特定情况?编辑
我发现IETF:
编码注意事项:多部分内容类型不能包含编码.
但我也发现Wikipedia:
多部分类型的内容传输编码必须始终是"7比特","8比特"或"二进制",以避免多级解码所带来的复杂性.
这不矛盾吗?
我正在处理一些以奇怪方式表现的字符串.
在ruby中的正则表达式中,/ s不识别某些空格.
"175 75 16C 101/99 R".gsub( /\s/ , 'x' )
=> "175 x75 x16C x101/99 xR"
Run Code Online (Sandbox Code Playgroud)
预期的结果是每个空格都转换为'x'
我试图强制编码为UTF-8到字符串,但它也没有工作.我需要一个正则表达式匹配我的字符串中的每种空格并将它们转换为常规空格.
编辑:
str.encode('utf-8').chars.each { |c| puts c.ord }
49
55
53
160
32
55
53
160
160
32
49
54
67
160
32
49
48
49
47
57
57
160
160
160
32
82
Run Code Online (Sandbox Code Playgroud) BottomNavigationItemView实现ItemView具有该setChecked()方法的接口。
我试图用 Espresso 断言检查了一个 itemView 但我得到了同样的错误,无论我的期望值是什么,isChecked()或者isNotChecked().
我的测试:
ViewInteraction buttonHome = onView(
allOf(withId(R.id.bottomHome),
childAtPosition(
childAtPosition(
withId(R.id.bottom_navigation),
0),
0),
isDisplayed()));
buttonHome.check(matches(isNotChecked()));
Run Code Online (Sandbox Code Playgroud)
错误信息
android.support.test.espresso.base.DefaultFailureHandler$AssertionFailedWithCauseError: 'with checkbox state: is <true>' doesn't match the selected view.
Expected: with checkbox state: is <true>
Got: "BottomNavigationItemView{id=2131493015, res-name=bottomHome, visibility=VISIBLE, width=360, height=168, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=2}"
Run Code Online (Sandbox Code Playgroud)
我怎么能断言 aBottomNavigationItemView是当前选定的项目BottomNavigationView?
android android-testing android-espresso bottomnavigationview
如何在Android中将视图与屏幕右侧对齐?我用过这个但没有用过请帮忙吗?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/widget0"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#FFFFFF" android:paddingLeft="10px" android:paddingTop="10px"
android:paddingBottom="10px" android:paddingRight="10px">
<LinearLayout android:id="@+id/heading" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:orientation="horizontal">
<ImageView android:id="@+id/widget30" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:src="@drawable/logo_cpw">
</ImageView>
<EditText android:id="@+id/widget28" android:layout_width="134px"
android:layout_height="35px" android:text="EditText"
android:textSize="18sp" android:background="@drawable/rounded_edit_text_effects"
android:gravity="right" android:layout_alignParentRight="true" android:paddingRight="-10px">
</EditText>
</LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我使用了absoluteLayout而不是relativelayout,但那也没用.请帮忙 ?
我对所有ruby对象中存在的一种先天方法(即object_id方法)的工作感到困惑.当我一次又一次地在任何Fixnum对象上运行object_id方法时,例如在irb中,如果我这样做,
>> 100.object_id
=> 201
并再次这样做,
>> 100.object_id
=> 201
但是当我使用String对象时
>>"你好".object_id
=> 162333336
并再次这样做,
>>"你好".object_id
=> 15502236
为什么这样?在ruby中,一切都是一个对象,每个对象都有一个名为object_id的固有方法,它唯一地标识对象.但是在这里,ruby让我感到困惑,因为它将具有相同文本(即"Hello")的两个字符串视为不同,但两个具有相同值(即100)的Fixnum对象相同,并为它们提供相同的对象ID.为什么这样?谁能帮帮我吗?
我知道其他地方已经触及了这些问题,但我对if elseruby中多行(块?)语句的正确语法略感不安.
举个例子:
if condition then
do something
do somethingelse
do yetanotherthing
done
else
do acompletelyunrelatedthing
done
Run Code Online (Sandbox Code Playgroud)
我知道then如果使用多行,则需要声明,但是done在else必要之前是否需要?这似乎会脱离if...else上下文.当我这样做时,done我得到:
syntax error, unexpected '\n', expecting tCOLON2 or '[' or '.'
当我不包括它时,我得到:
syntax error, unexpected keyword_else, expecting keyword_end
这是在我的应用程序中创建模型时是否发生错误的问题.
我以通常的方式创建了一个模型
rails g model Media
Run Code Online (Sandbox Code Playgroud)
现在我认为这实际上会创造以下内容
class CreateMedias < ActiveRecord::Migration
def change
create_table :medias do |t|
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
但它没有创造
class CreateMedia < ActiveRecord::Migration
def change
create_table :media do |t|
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
我认为模型表示为单一媒体,但数据库由许多媒体组成.为什么迁移不会改变为媒体?最好删除此模型并再次尝试,还是这种正常行为?
谢谢
全部在标题中。
每次自动设置此标头对任何人都有好处吗?有谁知道这个规范背后的想法?
ruby ×5
android ×3
block ×1
content-type ×1
email ×1
fetch ×1
fetch-api ×1
if-statement ×1
javascript ×1
model ×1
namespaces ×1
postfix-mta ×1
regex ×1
rspec ×1
ruby-1.9.3 ×1
sendmail ×1
smtp ×1
whitespace ×1