Comments (4)
Actually, it might be enough to have something like Action.options :milk
, so that we have access to ctx.milk
w/o adding it to Action.expects
:
class AddsMilk
include LightService::Action
expects :cup
options :milk # like expects, but doesn't raise errors if missing
executed do |ctx|
next ctx unless ctx.milk
ctx.cup.add ctx.milk
end
end
from light-service.
@padi: Let me try to summerize what I read above.
- You have 4 actions the organizer will execute
- Since you are expecting
milk
to be in the context for the 3rd action, the previous action has to add it to the context in order to avoid theExpectedKeyNotInContextError
exception - You suggest making
milk
anoptional
attribute in the context so your 2nd (or an earlier) action does not have to set it explicitly nil
If all the statments above are correct, what would the context set the optional attributes? Just nil?
I have not bumped into this scenario just yet, but I could see this being a problem if you want to reuse actions with different organizers using different contexts. We try to make our actions so small, that if something does not fit in it, we just create another action for it. You guys might be pushing this further than what we use it for.
It would be helpful if you could send a PR with a new spec in it, that better demonstrates the problem. A test should tell us the whole story, right?
from light-service.
@padi: Any update on this? What should I do with this issue?
from light-service.
I don't remember the particular scenario that prompted me to post this PR. I'll close this issue for now until we encounter a really painful scenario that absolutely requires something like this.
from light-service.
Related Issues (20)
- Is there a LightService-like project in Python? HOT 2
- Yard Documentation to code write with light-service HOT 4
- Deprecation warning using organizer within an organizer HOT 7
- Rollback Block Not Invoked In Iterated Actions HOT 10
- Testing actions in isolation HOT 4
- [RFC] Closing pull requests while a new build is starting causes failures HOT 1
- Running actions in jobs HOT 11
- reusing modules within actions
- Surprising `add_to_context` orchestrator behaviour HOT 1
- How to handle default values for dependency injection? HOT 9
- Help testing LS release candidate HOT 6
- Why this gem add activesupport as runtime dependency? HOT 11
- around for Actions HOT 3
- Namespacing Organizers and Actions HOT 1
- Confused about context failure HOT 1
- Can I chain Organizers together? HOT 5
- `reduce_case` not supported when running Ruby < 2.7, but not documented as such HOT 1
- README's built-in localization adapter documentation has a bug
- How about an "after" hook that will be called after "fail_and_return!"? HOT 2
- Remove the ActiveSupport dependency
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from light-service.